Yukarıdan aşağıya bir XNA oyunu yapıyorum. Haritalar karolar tarafından oluşturulur. Son zamanlarda fark ettiğim bir sorun, fayanslar arasındaki çizgilerden oluşan bir 'ızgara'. Yalnızca bazen ve yalnızca kamera konumuna bağlı olarak görünür. XNA'nın konumlandırmayı yapmasına izin verdim, neden bu çizgiler görünüyor?
İşte çizgileri olan bir resim:
Ancak, kameramı biraz hareket ettirdikten sonra, sihirli bir şekilde nasıl görünmesi gerektiğine geri dönüyor:
Herhangi bir yardım için teşekkürler!
DÜZENLE:
Bu, kaynak kodu için yapabileceğim en iyi şey, bu son derece büyük bir proje ve renderleme birden fazla alanda yapılır:
Ana İşleme Döngüsü Döşeme gibi dinamik öğeler için:
spriteBatch.Begin(SpriteSortMode.Deferred, Nothing, SamplerState.LinearClamp, Nothing, Nothing, Nothing, Matrix.CreateTranslation(CameraX, CameraY, 0))
Mode.Render(spriteBatch, False)
For Each j As [Delegate] In DynamicInjectionList
j.DynamicInvoke(spriteBatch)
Next
DynamicInjectionList.Clear()
spriteBatch.End()
Mode.Render
:
For x As Integer = 0 To GRIDMAX - 1
For y As Integer = 0 To GRIDMAX - 1
For z As Integer = 0 To 2
Dim ter As TiledTerrain = Terrain(x, y, z)
If ter IsNot Nothing Then
sb.Draw(CBaseClient.TextureLibrary("TileMap"), New Rectangle(x * GRIDSIZE, y * GRIDSIZE, GRIDSIZE, GRIDSIZE), New Rectangle(ter.Texture_X, ter.Texture_Y, GRIDSIZE, GRIDSIZE), Color.White)
End If
Next
Next
Next
TiledTerrain.vb
Sınıf:
Imports ProtoBuf
<ProtoContract()> _
Public Class TiledTerrain
<ProtoMember(1)> _
Public Property X As Integer
<ProtoMember(2)> _
Public Property Y As Integer
<ProtoMember(3)> _
Public Property Z As Integer
<ProtoMember(4)> _
Public Property Texture_X As Integer
<ProtoMember(5)> _
Public Property Texture_Y As Integer
End Class
Araştırmam:
Biraz arama yaptım ve buldum:
- Bu soruna yırtılma denir (sanırım?)
- Genellikle karo konumunu tutmak için bir kayan nokta veri türü kullanarak oluşur (
Integer
bu yüzden bu bir sorun olmamalı değil mi?)