ios - 检测哪个节点点击了 3D 模型

标签 ios swift arkit

我有 3D 模型,想单击此模型上的特定节点来创建一些 Action 。我的模型是一组节点;每个节点都没有 chilled 节点,我想单击其中一个节点以执行某些操作并单击另一个节点以执行不同的操作;如何检测哪个节点点击了我的模型?

最佳答案

您应该阅读一些有关 SceneKit HitTest 方法的信息并关注 hit-test method .

func registerGestureRecognizer() {
    let tap = UITapGestureRecognizer(target: self, action: #selector(detectNode))
    self.sceneView.addGestureRecognizer(tap)
}

@objc func detectNode(_ sender: UITapGestureRecognizer) {
    let sceneView = sender.view as! ARSCNView
    let location = sender.location(in: sceneView)
    let results = sceneView.hitTest(location, options: [SCNHitTestOption.searchMode : 1])

    for result in results.filter( { $0.node.name != nil }) {
        if result.node.name == "Your node name" {
            // excuse some actions
        }
    }
}

希望对您有所帮助!

关于ios - 检测哪个节点点击了 3D 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54341647/

相关文章:

iphone - 是否可以更改包标识符?

swift - ARKit 将 WorldTrackingConfiguration 设置为 gravityAndHeading 会产生错误

ios - SceneKit 节点不会改变场景根节点的位置

ios - iOS 有没有办法调整键盘高度?

swift - 在模拟器上测试时的 iPad 设备方向问题

Swift:将实例变量附加到 View Controller

ios - 我怎样才能使我的 ARSKView 变暗?

ios - 将数据从 tableView 传递到 UIViewController swift 3

ios - Swift 2 jSON Call 可以抛出但未标有try

ios - 使用 Swift 和 Firebase 更改用户电子邮件和密码