Unity3d 使用世界空间画布在光线投射上输入.mousePosition.x或y等效项

Unity3d 使用世界空间画布在光线投射上输入.mousePosition.x或y等效项,unity3d,raycasting,Unity3d,Raycasting,我正在尝试将鼠标事件转换为VR光线投射事件 我将Input.mousePosition.x和Input.mousePosition.y作为鼠标单击事件的坐标。我想在VR光线投射命中上应用相同的事件 我有以下代码 Ray ray = new Ray(CameraRay.transform.position, CameraRay.transform.forward); RaycastHit hit; if (GetComponent<Collider>().Raycast(ray, o

我正在尝试将鼠标事件转换为VR光线投射事件

我将
Input.mousePosition.x
Input.mousePosition.y
作为鼠标单击事件的坐标。我想在VR光线投射命中上应用相同的事件

我有以下代码

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");
}
光线=新光线(CameraRay.transform.position,CameraRay.transform.forward);
雷卡斯特击中;
if(GetComponent().Raycast(光线,外击,100)){
Debug.Log(“True”);
Vector3点=camera.WorldToScreenPoint(点击点);
}否则{
Debug.Log(“False”);
}
从光线投射命中点,如何获得光线击中对撞机的等效x-y坐标

更新:

下面的脚本附加到我的Unity设置中的一个颜色选择器对象上。在“颜色选择器”上悬停时,我想获得光线投射击中碰撞器的位置的坐标(以便我可以获得该坐标中的颜色)

问题1: 在FixedUpdate上,我有一个if语句
if(GetComponent().Raycast(ray,out-hit,100))
,它返回false。我错过了什么

问题2:
如果设置了hit.point,我可以得到射线击中对撞机的点的x、y、z坐标,即点[0]、点和点[2]?

我不是Unity中的虚拟现实专家,但你通常会使用
Camera.WorldToScreenPoint
来实现这些目的。要在主摄像机上使用它,请使用以下行:

Ray ray = new Ray(CameraRay.transform.position, CameraRay.transform.forward);
RaycastHit hit;

if (GetComponent<Collider>().Raycast(ray, out hit, 100)) {
    Vector3 point = camera.WorldToScreenPoint(hit.point);
}
尝试使用此代码,根据我所读的内容,Physics.Raycast()几乎总是比Collider.Raycast()更适合使用

问题2:

Vector3[] point = new Vector3[3] {hit.point.x, hit.point.y, hit.point.z};

这将创建一个名为point的数组,该数组指定了三个变量,尽管z坐标可以在2D色轮上放弃使用。

我尝试实现了这一点,但代码
if(GetComponent().Raycast(ray,out-hit,100))
返回
false
。你知道为什么会这样吗?看来我以前的代码也有同样的问题。为什么要使用Collider.Raycast()?您通常会使用Physics.Raycast()。我不在家的时候不能做详细的研究,但是试试看。尝试了
物理。Raycast(ray,out hit,100)
也没用。它在吃我的头!谢谢你的帮助。检查你的光线初始化。可能是因为你想击中的目标太远了。我会Neef(点击发送太早)需要更多的信息进行故障排除。
Vector3[] point = new Vector3[3] {hit.point.x, hit.point.y, hit.point.z};