Ios 在ARKit中是否仍有识别触摸节点的方法?
我正在使用Ios 在ARKit中是否仍有识别触摸节点的方法?,ios,swift,arkit,scnnode,Ios,Swift,Arkit,Scnnode,我正在使用ARKit投影一个3D文件。在该三维模型中,有多个子节点。当用户触摸任何节点时,我们必须显示有关被触摸节点的一些信息 我们有没有办法确定用户接触的节点 您可以执行点击测试以确定用户触摸了哪个节点。假设场景中有两个节点,例如: override func viewDidLoad() { ... let scene = SCNScene() let node1 = SCNNode() node1.name = "node1" let node2
ARKit
投影一个3D文件。在该三维模型中,有多个子节点。当用户触摸任何节点时,我们必须显示有关被触摸节点的一些信息
我们有没有办法确定用户接触的节点 您可以执行点击测试以确定用户触摸了哪个节点。假设场景中有两个节点,例如:
override func viewDidLoad() {
...
let scene = SCNScene()
let node1 = SCNNode()
node1.name = "node1"
let node2 = SCNNode()
node2.name = "node2"
scene.rootNode.addChildNode(node1)
scene.rootNode.addChildNode(node2)
sceneView.scene = scene
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapped))
sceneView.addGestureRecognizer(tapGestureRecognizer)
}
在点击处理程序中,您可以检测被触摸的节点并执行所需的任何逻辑,例如显示有关该节点的一些信息
@objc func tapped(recognizer: UIGestureRecognizer) {
guard let sceneView = recognizer.view as? SCNView else { return }
let touchLocation = recognizer.location(in: sceneView)
let results = sceneView.hitTest(touchLocation, options: [:])
if results.count == 1 {
let node = results[0].node
print(node.name) // prints "node1" or "node2" if user touched either of them
if node.name == "node1" {
// display node1 information
} else if node.name == "node2" {
// display node2 information
}
}
}
可能重复的