SpriteKit - 获取最近的节点

2024-04-18

有没有办法获得距离节点最近的节点?

我正要编写一个方法来迭代所有节点并计算距离等...但想知道是否有更好的方法?

我有 30 个节点,需要距离这 30 个节点中的每一个最近的 2 个节点(如果有意义的话)。


从 iOS 10 开始,您可以使用空间分区功能游戏套件 https://developer.apple.com/reference/gameplaykit。在 2D 中GK四叉树 https://developer.apple.com/reference/gameplaykit/gkquadtree or GKRTree https://developer.apple.com/reference/gameplaykit/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)

然后就可以按地区搜索了。

    let enemiesInProximity = enemiesRTree.elements(
       inBoundingRectMin: vector2(0, 0),
       rectMax: vector2(100, 100))

然后您可以创建搜索区域,例如相对于球员的位置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpriteKit - 获取最近的节点 的相关文章

随机推荐