【发布时间】:2019-02-24 18:29:13
【问题描述】:
我正在开发一个应用程序,它首先检测到有一个垂直平面,然后,如果用户触摸该平面,我将 SCNNode 添加到 rootNode。之后,我想检测用户是否触摸节点来做更多事情,但我无法检测到该点击,它只是检测到平面点击。现在我又回到了这个方法:
@objc func tapped(sender: UITapGestureRecognizer) {
let sceneView = sender.view as! ARSCNView
let tapLocation = sender.location(in: sceneView)
let hitTest = sceneView.hitTest(tapLocation, types: .existingPlaneUsingExtent)
if !hitTest.isEmpty {
addItem(hitTestResult: hitTest.first!)
hideTip()
}
}
这是在平面上点击时添加节点的那个,但是现在我想检测节点何时被点击,我使用了这段代码:
let sceneView = sender.view as! ARSCNView
let tapLocation = sender.location(in: sceneView)
let hitTouchTest = sceneView.hitTest(tapLocation)
if !hitTouchTest.isEmpty {
let results = hitTouchTest.first!
let node = results.node
}
它输入了if,但是节点的名称总是nil,当我创建节点时将它添加到平面我给它一个名称......如何检测到节点被点击?
【问题讨论】:
标签: ios swift arkit scnnode sceneview