没有 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
无关,只与几何图形和边界框有关。
我正在尝试确定如何在不实际为我的 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
无关,只与几何图形和边界框有关。