我正在尝试将鼠标事件转换为VR Raycast事件 .
我 Input.mousePosition.x
& Input.mousePosition.y
作为鼠标点击事件的坐标 . 我想在VR Raycast点击中应用相同的事件 .
我有以下代码
Ray ray = new Ray(CameraRay.transform.position, CameraRay.transform.forward);
RaycastHit hit;
if (GetComponent<Collider>().Raycast(ray, out hit, 100)) {
Debug.Log ("True");
Vector3 point = camera.WorldToScreenPoint(hit.point);
} else {
Debug.Log ("False");
}
从Raycast命中点,我如何获得Ray击中对撞机的等效x-y坐标?
Update:
以下脚本附加到我的用于Google Cardboard的Unity设置中的颜色选择器对象 . 在悬停在颜色选择器上时,我想获得Raycast击中对撞机的位置的坐标(以便我可以获得该坐标中的颜色) .
Question 1: 在FixedUpdate上,我有一个if语句 if (GetComponent<Collider>().Raycast(ray, out hit, 100))
,它返回false . 我在这里想念的是什么?
Question 2: 我是否正确假设如果设置了hit.point,我可以得到射线击中对撞机的点的x,y,z坐标为点[0],点1和点[2]?
1 回答
我不是Unity中的VR专家,但你通常会将_680363用于这些目的 . 要在主摄像头上使用它,请使用以下行:
如果您对此感兴趣,z值会为您提供相机的距离 . Unity文档:https://docs.unity3d.com/ScriptReference/Camera.WorldToScreenPoint.html
EDIT:
问题1:
尝试使用这个代码,从我读过的,Physics.Raycast()几乎总是比Collider.Raycast()更好用 .
问题2:
这将创建一个名为point的数组,该数组具有指定的三个变量,但可以丢弃z坐标以用于2D色轮 .