Tôi đang tạo một trò chơi XNA từ trên xuống. Các bản đồ được tạo ra bởi gạch. Một vấn đề gần đây tôi nhận thấy là một 'lưới' các đường giữa các ô. Nó chỉ hiển thị đôi khi và chỉ phụ thuộc vào vị trí máy ảnh. Tôi để XNA xử lý định vị, tại sao các dòng này hiển thị?
Dưới đây là một hình ảnh với các dòng:
Tuy nhiên, sau khi di chuyển máy ảnh của tôi chỉ một chút, nó kỳ diệu quay trở lại cách nó được xuất hiện:
Cảm ơn vì bất kì sự giúp đỡ!
BIÊN TẬP:
Đây là điều tốt nhất tôi có thể làm cho mã nguồn, đây là một dự án cực kỳ lớn và việc kết xuất được thực hiện ở nhiều lĩnh vực:
Vòng lặp kết xuất chính Đối với các yếu tố động như gạch:
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
Lớp học:
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
Nghiên cứu của tôi:
Tôi đã thực hiện một số tìm kiếm vào nó và đây là tôi đã tìm thấy:
- Vấn đề này được gọi là rách (tôi tin?)
- Điều này thường xảy ra do sử dụng loại dữ liệu dấu phẩy động để giữ vị trí ô xếp (Tôi đang sử dụng
Integer
vì vậy đây không phải là vấn đề phải không?)