首页 > 解决方案 > 获取节点的rootNode

问题描述

在 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 默认不提供某些东西,而为子节点提供递归方法,这对我来说似乎很奇怪。

标签: swiftscenekitarkit

解决方案


不等于sceneView.scene.rootNode吗?


推荐阅读