मैं नीचे 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
इसलिए यह एक समस्या सही नहीं होनी चाहिए?)