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

时间:2017-07-08 20:20:29

标签: ios swift collision-detection scenekit hittest

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

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

问题,'命中测试'要求节点具有physicsBody 如果我有一个physicsBody,这将有效,但我需要在添加physicsBody之前使用我的SCNNode。

我的'environmentContainer'中有第一个SCNNode;但是,'results.first'返回第一个带有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

1 个答案:

答案 0 :(得分:0)

SceneKit命中测试默认测试几何。您可以将var day = document.getElementById("inputBox").value; 设置为true以检查节点的边界框。 命中测试应该只与几何和边界框SCNHitTestOption.boundingBoxOnly无关。