ios - HitTest (_ :options:) for SCNNodes without physicsBody swift

标签 ios swift collision-detection scenekit hittest

我正在尝试确定如何进行“hitTest”,而不实际为我的 SCNNode 创建物理主体。

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

问题,“ HitTest ”要求节点具有物理主体 如果我有一个物理主体,这将起作用,但在添加物理主体之前我需要对我的 SCNNode 进行一些操作。

我的“environmentContainer”中确实有第一个SCNNode;但是,“results.first”返回了第一个带有物理主体的节点,我需要第一个节点(无论它是否有物理主体)

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 HitTest 正在针对几何体进行测试。您可以将 SCNHitTestOption.boundingBoxOnly 设置为 true 以检查节点的边界框。 HitTest 应该与 physicalsBody 无关,只与几何形状和边界框有关。

关于ios - HitTest (_ :options:) for SCNNodes without physicsBody swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44990393/

相关文章:

iphone - iOS 5 - Coredata Sqlite DB 在杀死应用程序后丢失数据

iOS In App Purchase非消耗品判断是新购还是恢复

ios - 添加实现 UIWebView(CustomScroll)

ios - 跨多个 View 保持同步事件的最佳实践或设计模式是什么?

collision-detection - 游戏应该只依赖帧率吗?

c++ - 圆的碰撞解决问题

ios - webview 在 objective-c 中不起作用

swift - 从原始值推断 Swift 初始化器

swift - 有没有办法延迟 Swift 中的 return 语句?

java - 画好的形状停止后一直在振动