[英]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.