SceneKit: native way to find node at certain position in SCNView? If not, use a dictionary to map positions to nodes?
SceneKit是否有本机方式在SCNView中的给定位置(例如(0,0,0))处找到节点?
假定SCNView包含一个SCNNode,该SCNNode充当其他SCNNode的层。有没有一种本机的方法可以找到该层内特定位置的所有节点?
阅读类文档,似乎唯一的选择是创建并维护一个自定义数据结构,以将位置映射到节点。
但是希望有一些本机,因为这似乎是一个常见问题。
如果需要自定义数据结构,那么字典是否是在Swift中维护10K节点上的制表符的最有效方法?
节点符合
- hitTestWithSegmentFromPoint:toPoint:options:]
尽管我从未尝试过,但看起来SCNPhysicsWorld可以帮助您做到这一点。您要跟踪或查询的每个节点上都需要一个物理主体。
您可以在目标点放置不可见的主体,然后等待碰撞委托回调。
还有
fromTransform from: SCNMatrix4,
toTransform to: SCNMatrix4,
options options: [String : AnyObject]?) -> [SCNPhysicsContact]
另一种方法是将SCNSceneRenderer的
通常,对于SceneKit,请检查所有适用的协议引用。许多常见的调用是基于协议而不是类。