HitTest печатает имя объекта AR, даже если я не нажимаю на него.Что мне не хватает? - PullRequest
3 голосов
/ 24 июня 2019

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). Как этот метод может быть реализован?

...