Проблемы с Raycast для ARCamera в Unity3d с Vuforia SDK

Я новичок в Вуфории.

Игровой объект, к которому добавляется скрипт, представляет собой трехмерный объект, видимый на определяемом пользователем изображении.

Я знаю, что это не новый вопрос, и я просмотрел каждую ветку / сообщение в официальном дискуссионном блоге Vuforia, но проблема все еще сохраняется. И проблема кажется очень фундаментальной.

У меня есть следующий скрипт, прикрепленный к моему игровому объекту:

void Update () 
{
    if (Input.touchCount == 1) 
    {
        // Touches performed on screen
        Ray ray;
        RaycastHit hit;
        Debug.Log ("2");
        if(Camera.main != null)
        {
            Debug.Log ("3");
            ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
            hit = new RaycastHit();
            Debug.Log ("33");
            if(Physics.Raycast(ray, out hit))
            {
                Debug.Log ("4");
            }
                   }
            }
    }

Когда я запускаю сцену и касаюсь игрового объекта, консоль отладки показывает

2

3

33

НО НЕ 4. Почему-то этот луч не попадает в объект.

Этот скрипт отлично работает с обычной камерой. Может ли кто-нибудь пролить свет на это.

Спасибо


person aditya parikh    schedule 08.06.2014    source источник


Ответы (3)


(насколько я могу судить) Vuforia не использует ARCamera для обнаружения столкновений. Вместо этого есть еще одна «Фоновая камера» (вы можете увидеть ее, если запустите приложение в Unity и приостановите его работу; вы найдете ее на панели «Иерархия»). Для доступа к нему используйте

Camera.allCameras[0] 

вместо

Camera.main

надеюсь, это поможет

person Community    schedule 24.06.2014

Я думаю, что это ошибка между классом Collider и ARCamera, но решение таково:

  1. Создать новую сцену
  2. Создайте куб или любой игровой объект с компонентом коллайдера.
  3. НЕ удаляйте куб ни по какой причине
  4. Протестируйте с помощью любого алгоритма попадания (касание или мышь)

    using System.Collections;
    using UnityEngine;
    
    public class rayoPrueba : MonoBehaviour {
    void start () {print("entro"); }
    void Update() {
    
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, 100))
                print("Si le jue");
            }
        }
    
  5. Заменить mainCamera на ARCamera

  6. Проверить еще раз
  7. Поместите свой куб внутрь ImageTarget и реальной модели
  8. Удалите куб и давайте танцевать! Не знаю почему, но этим жуком убивают...(Ы)..

Хитрость в том, что... Никогда не теряйте игровой объект с помощью компонента Collider со сцены.

person Mario Alzate    schedule 19.05.2015

Если вы пытаетесь использовать RayCast в 3D-модели, обязательно добавьте компонент Box Collider в 3D-модель.

person Felipe B. Florez    schedule 12.09.2016