Sto realizzando un gioco XNA top down. Le mappe sono create da tessere. Un problema che ho notato di recente è una "griglia" di linee tra le piastrelle. Viene visualizzato solo a volte e solo in base alla posizione della telecamera. Lascio che XNA gestisca il posizionamento, perché vengono visualizzate queste linee?
Ecco una foto con le linee:
Tuttavia, dopo aver spostato la mia fotocamera per un po ', torna magicamente a come dovrebbe apparire:
Grazie per qualsiasi aiuto!
MODIFICARE:
Questo è il meglio che posso fare per il codice sorgente, questo è un progetto estremamente grande e il rendering è fatto in più aree:
Main Render Loop Per elementi dinamici come piastrelle:
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
Classe:
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
La mia ricerca:
Ho fatto qualche ricerca in esso e questo è stato che ho trovato:
- Questo problema si chiama lacrimazione (credo?)
- È comunemente causato dall'utilizzo di un tipo di dati in virgola mobile per mantenere la posizione della piastrella (lo sto usando,
Integer
quindi questo non dovrebbe essere un problema, giusto?)