Теперь я понимаю, что в большинстве случаев выбор объекта в ARCore не имеет никакого отношения к самому ARCore с точки зрения Unity, но стандартный подход просто не работает для меня.
RaycastHit hitObject;
Ray ray = FirstPersonCamera.ScreenPointToRay(hit.Pose.position);
if(Physics.Raycast(ray, out hitObject)) {
if(hitObject.collider != null) {
Debug.Log(hitObject.collider.gameObject.name);
Debug.Log(hitObject.collider.gameObject.tag);
if(hitObject.collider.gameObject.tag == TAG_SCHEME_OBJECT) {
movement = false;
}
}
}
Не берите в голову hit.Pose.position
Я тестировал здесь очень разные элементы. Теперь проблема:
Когда я касаюсь экрана, я ставлю объект Энди - отлично
Я блокирую установку следующего, используя if (currentNumber < objectsAllowed && placeNext)
- отлично работает. Я могу улучшить лимит (поставить больше Энди), когда я нажимаю на кнопку. Это также прекрасно работает
Забавная вещь происходит с моим коллайдером. Итак, мой Энди на экране, и я касаюсь экрана где-то еще. Мой Debug.Log показывает, что я нажал на своего Энди. И я не имею в виду, что у меня большой палец, я постукиваю на расстоянии 1 метра от него. Где бы я ни нажимал на экран, мой Debug.Log показывает, что я нажал на Энди.
Что я делаю не так? Это очень простой код из документации. Почему я всегда получаю информацию о том, что мой луч сталкивается с игровым объектом, если это не так?
UPDATE
Проблемы были простейшими, насколько это возможно. Коллайдер был слишком большим.