Estoy haciendo un juego XNA de arriba hacia abajo. Los mapas son creados por mosaicos. Un problema que noté recientemente es una "cuadrícula" de líneas entre los mosaicos. Solo aparece a veces y solo según la posición de la cámara. Dejo que XNA maneje el posicionamiento, ¿por qué aparecen estas líneas?
Aquí hay una foto con las líneas:
Sin embargo, después de mover mi cámara un poco, mágicamente regresa a cómo se supone que debe aparecer:
¡Gracias por cualquier ayuda!
EDITAR:
Esto es lo mejor que puedo hacer para el código fuente, este es un proyecto extremadamente grande y la representación se realiza en múltiples áreas:
Main Render Loop Para elementos dinámicos como mosaicos:
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
Clase:
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
Mi investigación:
He investigado un poco y esto es lo que he encontrado:
- Este problema se llama desgarro (¿creo?)
- Es comúnmente causado por el uso de un tipo de datos de punto flotante para mantener la posición del mosaico (estoy usando,
Integer
así que esto no debería ser un problema, ¿verdad?)