Я роблю гру 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
тому це не повинно бути проблемою, правда?)