我是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.不知怎的,这条光线没有撞到物体。
此脚本适用于普通相机。任何人都可以对此有所了解。
由于
答案 0 :(得分:4)
(据我所知)Vuforia没有使用ARCamera进行碰撞检测。相反,还有另一个背景相机' (如果您在Unity中运行应用程序并暂停它,您可以看到它;您将在“层次结构”窗格中找到它)。要访问它,请使用
Camera.allCameras[0]
而不是
Camera.main
希望有所帮助
答案 1 :(得分:3)
我认为这是Collider类和ARCamera之间的错误,但解决方法是:
使用任何点击算法(触摸或鼠标)进行测试
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");
}
}
替换ARCamera的mainCamera
诀窍是......永远不要从场景中丢失带有碰撞器组件的游戏对象..
答案 2 :(得分:3)
如果您尝试在3D模型上使用RayCast,您应该确保在3D模型上添加Box Collider Component。