我是新来的。
添加脚本的游戏对象是一个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控制台显示
23
33BUT NOT不知何故,这条射线没有击中物体。
这个脚本在普通摄像机中工作得很好。谁能解释一下这个问题?
谢谢
(据我所知)Vuforia不使用ARCamera进行碰撞检测。取而代之的是另一个"背景摄像头"(如果你在Unity中运行应用并暂停它,你就可以看到它;您将在Hierarchy窗格中找到它)。使用
访问它Camera.allCameras[0]
代替
Camera.main
希望有帮助
我认为这是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"); } }
-
将mainCamera替换为ARCamera
- 再次测试
- 把你的立方体放在ImageTarget和真实模型中 删除立方体,让我们跳舞吧!我不知道为什么,但是这个bug被杀死了…(Y) .
诀窍是…永远不要在场景中丢失带有Collider Component的gameObject。
如果你想在3d模型上使用RayCast,你应该确保在3d模型上添加Box Collider Component