没有 physicsBody 的 SCNNodes 的 hitTest(_:options:) swift

hitTest(_:options:) for SCNNodes without physicsBody swift

我正在尝试确定如何在不实际为我的 SCNNode 创建 physicsBody 的情况下执行 'hitTest'。

命中测试方法可以使用什么替代方法? (包括没有物理体的节点)。我正在尝试 select 屏幕触摸打开的第一个节点

问题,'hit test'要求节点有physicsBody 如果我有一个 physicsBody,这会起作用,但我需要在添加 physicsBody 之前用我的 SCNNode 做一些事情。

我的 'environmentContainer' 确实有第一个 SCNNode;然而,'results.first' 返回了第一个带有 physicsBody 的节点,我需要第一个节点(不管它是否有 physicsBody 或没有)

case .began:
    let results = sceneView.hitTest(firstTouch!, options: [SCNHitTestOption.firstFoundOnly: true])
    if results.first != nil {
        if environmentContainer.childNodes.contains((results.first?.node)!)
        {
            firstDragTapOnSelectedNode = true
            print("firstDragTapOnSelectedNode = true")
        }
        else {
            // always returns false because 'results.first' is picking up the wrong node which is in a different SCNNode container
            print("firstDragTapOnSelectedNode = false")
        }
    }
case .ended:
    firstDragTapOnSelectedNode = false
default: break
}

注意:firstDragTapOnSelectedNode初始化为false

默认情况下,SceneKit 命中测试针对几何体进行测试。您可以将 SCNHitTestOption.boundingBoxOnly 设置为 true 以检查节点的边界框。 命中测试应该与 physicsBody 无关,只与几何图形和边界框有关。