2014-06-08 1 views
1

Я новичок в Vuforia.Проблемы с Raycast для ARCamera в Unity3d с Vuforia SDK

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

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

Я следующий сценарий прилагается к моему GameObject:

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"); 
      } 
        } 
      } 
    } 

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

НО НЕ 4. Как-то этот луч не ударить объект.

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

Благодаря

ответ

4

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

Camera.allCameras[0] 

вместо

Camera.main 

Надежда, что помогает

3

Я думаю, что это ошибка между классом коллайдер и 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. Поместить u`r Куб внутри ImageTarget и реальная модель
  8. Удалить куб и танцевать! Я не знаю почему, но ошибка будет убит с этим ... (Y) ..

Хитрость заключается в том ... Никогда не теряйте геймобжекты с коллайдер компонента со сцены ..

2

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