gpt4 book ai didi

ios - SpriteKit - 获取最近的节点

转载 作者:可可西里 更新时间:2023-11-01 03:55:59 25 4
gpt4 key购买 nike

有没有办法让最近的节点到一个节点?

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

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

最佳答案

从 iOS 10 开始,您可以使用 GampelayKit 的空间分区功能.在二维中 GKQuadtreeGKRTree取决于您的需求。

来自文档:

Quadtrees and R-trees have different performance tradeoffs for different tasks: quadtrees can be faster when objects are more uniformly distributed in space or when their positions change frequently, and R-trees can be faster when searching for all objects in a given region.

将你的敌人添加到树中:

    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))

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

关于ios - SpriteKit - 获取最近的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22724926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com