我Experience.rcproject
的动画可以通过点击动作触发。两个圆柱体分别命名为“Button 1”和“Button 2”,并打开了 Collide。
我正在使用Async
加载 Experience.Map 场景的addAnchor
方法和将 mapAnchor 添加到 ViewController 中的 ARView 的方法。
我尝试在现场运行 HitTest 以查看应用程序是否正确响应。
尽管如此,即使我没有点击它而是点击它附近的区域,HitTest 结果也会打印按钮的实体名称。
class augmentedReality: UIViewController {
@IBOutlet weak var arView: ARView!
@IBAction func onTap(_ sender: UITapGestureRecognizer) {
let tapLocation = sender.location(in: arView)
// Get the entity at the location we've tapped, if one exists
if let button = arView.entity(at: tapLocation) {
// For testing purposes, print the name of the tapped entity
print(button.name)
}
}
}
下面是我尝试将 AR 场景和点击手势识别器添加到 arView。
class augmentedReality: UIViewController {
arView.scene.addAnchor(mapAnchor)
mapAnchor.notifications.hideAll.post()
mapAnchor.notifications.mapStart.post()
self.arView.isUserInteractionEnabled = true
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(onTap))
self.arView.addGestureRecognizer(tapGesture)
}
问题 1
当我真正点击它而不是靠近它时,如何实现仅打印按钮的实体名称的目标?
问题2
我真的需要打开碰撞才能在 HitTest 中检测到两个按钮吗?
问题 3
有一个 installGestures 方法。目前没有关于此的在线教程或讨论。我试过了,但我对(Entity & HasCollision)感到困惑。这种方法如何实现?