使用Vuforia SDK的Unity3d中ARCamera的光线投射问题



我是新来的。

添加脚本的游戏对象是一个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");
            }
                   }
            }
    }

当我运行场景并触摸游戏对象时,Debug控制台显示

2

3

33

BUT NOT不知何故,这条射线没有击中物体。

这个脚本在普通摄像机中工作得很好。谁能解释一下这个问题?

谢谢

(据我所知)Vuforia不使用ARCamera进行碰撞检测。取而代之的是另一个"背景摄像头"(如果你在Unity中运行应用并暂停它,你就可以看到它;您将在Hierarchy窗格中找到它)。使用

访问它
Camera.allCameras[0] 

代替

Camera.main

希望有帮助

我认为这是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. 删除立方体,让我们跳舞吧!我不知道为什么,但是这个bug被杀死了…(Y) .

诀窍是…永远不要在场景中丢失带有Collider Component的gameObject。

如果你想在3d模型上使用RayCast,你应该确保在3d模型上添加Box Collider Component

最新更新