使用Vuforia SDK在Unity3d中使用ARCamera进行Raycast的问题

时间:2014-06-08 20:00:01

标签: c# camera unity3d augmented-reality vuforia

我是Vuforia的新手。

添加脚本的游戏对象是一个3d对象,可在用户定义的触发图像上显示。

我知道这不是一个新问题,我已经浏览了官方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.不知怎的,这条光线没有撞到物体。

此脚本适用于普通相机。任何人都可以对此有所了解。

由于

3 个答案:

答案 0 :(得分:4)

(据我所知)Vuforia没有使用ARCamera进行碰撞检测。相反,还有另一个背景相机' (如果您在Unity中运行应用程序并暂停它,您可以看到它;您将在“层次结构”窗格中找到它)。要访问它,请使用

Camera.allCameras[0] 

而不是

Camera.main

希望有所帮助

答案 1 :(得分:3)

我认为这是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. 替换ARCamera的mainCamera

  6. 再次测试
  7. 将你的Cube放在ImageTarget和真实模型
  8. 删除立方体,让我们跳舞!!我不知道为什么,但这个小虫被杀了......(Y)..
  9. 诀窍是......永远不要从场景中丢失带有碰撞器组件的游戏对象..

答案 2 :(得分:3)

如果您尝试在3D模型上使用RayCast,您应该确保在3D模型上添加Box Collider Component。