我有一台物理雷达连接到相机。指针单击事件触发器正常工作。但是我需要从源代码中完成它。这些是我的尝试:
private void SetOnPushButtonFireManager(){
cardboard.OnTrigger += () => {
Debug.Log("Button triggered!");
RaycastHit hit;
// if(Physics.Raycast(headGameObject.GetComponent<GvrHead>().Gaze, out hit, Mathf.Infinity)){
if(Physics.Raycast(cameraGameObject.transform.position, cameraGameObject.transform.forward, out hit, Mathf.Infinity)){
Debug.Log("Collision detected!");
}
};
}
&#34;按钮被触发!&#34;显示在控制台中。很遗憾&#34;碰撞检测到!&#34;不是。但是,指针单击事件触发器正常工作(检查器中附加的组件)。我怎么知道发生了什么?为什么它不起作用?
更新:我在这里回答了这个问题:http://answers.unity3d.com/answers/1200449/view.html
(stackoverflow不允许我删除这个问题)
答案 0 :(得分:1)
这是我用来从相机发射光线的一些代码。我没有Google Cardboard,这是为相机和鼠标指针设置的。
// Fire ray from camera
float rayLength = 2f
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
// If ray hits object within length
if (Physics.Raycast(ray, out hit, rayLength))
{
Debug.Log("Collision detected!:);
}
答案 1 :(得分:0)
这对我也不起作用,最后,我忘记将“ GvrPointerPhysicsRaycaster”类放到相机中。 Inspector Image
一旦添加,它就可以完美运行。
void Update()
{
RaycastHit hit;
if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out hit, Mathf.Infinity))
{
if (activeSelected == null)
{
if (hit.collider.tag == "Plane")
activeSelected = Instantiate(mainApp.mainModel.preafabSelect, hit.point, Quaternion.LookRotation(hit.normal));
} else
{
activeSelected.transform.position = hit.point;
activeSelected.transform.rotation = Quaternion.LookRotation(hit.normal);
}
}
}