My Experience.rcproject имеет анимацию, которая может быть активирована нажатием кнопки.
Два цилиндра имеют названия «Кнопка 1» и «Кнопка 2» и имеют функцию Collide.
Я использую метод ASync для загрузки сцены Experience.Map и метод addAnchor для добавления mapAnchor к ARView в ViewController.
Я попытался запустить 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
Действительно ли мне нужно включить Collide, чтобы обе кнопки могли быть обнаружены в HitTest?
Вопрос 3
Есть метод installGestures. На данный момент нет онлайн-учебников или обсуждений по этому вопросу. Я пытался, но меня смущает (Entity & HasCollision). Как этот метод может быть реализован?