在ARKit项目中,当用户点击屏幕时,我想获取用户想要与之交互的元素的rootNode
。
手势和命中测试
func screenTapped(_ sender: UITapGestureRecognizer) {
let hitTestResult = sceneView.hitTest(touchLocation)
if let result = hitTestResult.first {
guard let rootNode = getRoot(for: result.node) else {return}
...
}
递归函数获取根节点
func getRoot(for node: SCNNode) -> SCNNode? {
if let node = node.parent {
return getRoot(for: node)
}
else {
return node
}
}
但是对我来说,Swift在默认情况下不提供某些功能,而为子节点提供递归方法似乎有些奇怪。
有替代/更好的方法吗?
我应该将此功能写为
SCNNode
的扩展名吗? 最佳答案
它不等于sceneView.scene.rootNode
吗?
关于swift - 获取节点的rootNode,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52370664/