有没有办法让最近的节点到节点?
我只是想编写一个迭代所有节点并计算距离等的方法......但是想知道是否有更好的方法?
我有30个节点,需要2个最近的节点到30个节点中的每一个(如果这是有意义的).
从 iOS 10 开始,您可以使用GampelayKit的空间分区功能。在 2D 中,根据您的需要选择GKQuadtree或GKRTree 。
来自文档:
四叉树和 R 树对于不同的任务有不同的性能权衡:当对象在空间中分布更均匀或位置频繁变化时,四叉树可以更快,而在搜索给定区域中的所有对象时,R 树可以更快。
将你的敌人添加到树中:
let minX = Float(enemy.frame.minX)
let minY = Float(enemy.frame.minY)
let maxX = Float(enemy.frame.maxX)
let maxY = Float(enemy.frame.maxY)
var enemiesRTree = GKRTree(maxNumberOfChildren: 3)
enemiesRTree.addElement(enemy,
boundingRectMin: vector2(minX, minY),
boundingRectMax: vector2(maxX, maxY),
splitStrategy: GKRTreeSplitStrategy.linear)
Run Code Online (Sandbox Code Playgroud)
然后就可以按地区搜索了。
let enemiesInProximity = enemiesRTree.elements(
inBoundingRectMin: vector2(0, 0),
rectMax: vector2(100, 100))
Run Code Online (Sandbox Code Playgroud)
然后,您可以创建搜索区域,例如相对于玩家位置的搜索区域。
| 归档时间: |
|
| 查看次数: |
1282 次 |
| 最近记录: |