トップダウン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
ので、これは問題にならないでしょうか?)