하향식 XNA 게임을 만들고 있습니다. 지도는 타일로 만들어집니다. 내가 최근에 발견 한 문제는 타일 사이의 '격자'입니다. 카메라 위치에 따라 가끔씩 만 나타납니다. XNA가 포지셔닝을 처리하도록했는데 왜이 선들이 나타 납니까?
다음은 선이있는 그림입니다.
그러나 내 카메라를 조금만 움직 인 후에는 마술처럼 카메라가 어떻게 나타나는지 되돌아갑니다.
도움을 주셔서 감사합니다!
편집하다:
이것은 소스 코드에 대해 할 수있는 최선의 방법입니다. 이것은 매우 큰 프로젝트이며 렌더링은 여러 영역에서 수행됩니다.
메인 렌더 루프 타일과 같은 동적 요소의 경우 :
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
수업:
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
내 연구 :
나는 그것에 대해 몇 가지 검색을했으며 이것이 내가 찾은 것입니다.
- 이 문제를 찢는 것 (믿습니다)
- 일반적으로 부동 소수점 데이터 형식을 사용하여 타일 위치를 유지하기 때문에 발생합니다 (사용하고
Integer
있으므로 문제가되지 않습니까?)