[英]How does one find the index of an object in a list whose x and y position value match a given x and y
我正在創建一個使用圖塊系統的游戲。 每個圖塊都是一個對象,其位置帶有Vector2。 我在清單中有所有磁貼。
我還有另一段代碼可以生成一堆Vector2,其中應將樹木放置在瓷磚網格上。 每個樹的位置都在列表的Vector2中
我的問題是,如何在樹坐標列表中找到與其坐標完全匹配的圖塊索引。 一旦找到,便可以告訴列表中的該平鋪對象將其treePresent布爾值設為true。
瓦片的gridPosition.X和gridPosition.Y:0(1,9)1(1,10)2(2,1)3(2,2)
樹木的treePosition.X和treePosition.Y:0(1,9)1(2,2)
然后我可以說:tileList [0] .treePresent = true; tileList [3] .treePresent = true;
使用圖塊系統的游戲不應使用動態系統(列表)來跟蹤圖塊。 我假設“平鋪系統”是指將整個游戲世界/地圖划分為2D網格。 原因有兩個:
因此,解決方案很簡單:制作2D瓷磚陣列。 第一個維度用於x坐標,第二個維度用於y。
例如:worldData [x] [y](或等效於您選擇的語言)。 以這種方式,查找圖塊非常容易。 在這里,如果我想要平鋪(a,b),我只需調用worldData [a] [b]。 無需循環或比較。
任何問題?
嘗試
tileList.Where(t => treeList.Contains(t.Position));
如果要四處走動,請注意,這會比較浮點數相等,這會引起問題。
您還可以制作一個2暗列表,並僅通過樹的位置引用圖塊。 除非您更改網格大小,否則不需要使用動態列表,而是可以創建二維數組
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.