Ray ray = head.Gaze。这是做什么的?

时间:2016-07-16 15:18:06

标签: unity3d

这行代码有什么作用?我希望它会把光线投射到头部凝视的地方。我这样做 Camera.main.ScreenPointToRay(Input.mousePosition);在这里,我可以将光线投射到头部凝视而不是鼠标位置。

2 个答案:

答案 0 :(得分:1)

光线是具有起始位置和方向的矢量。在以下情况下:

Ray ray = head.Gaze;

您正在获得用户正在查看的方向和起点。这很可能与将相机向前移动及其位置相同。

Ray ray = new Ray();
ray.direction = Camera.main.transform.forward;
ray.origin = Camera.main.transform.position;

编辑:基于评论

为了检查碰撞,你会使用Raycast:

Raycasthit hitInfo;
float distance = 10.0f;
if(Physics.Raycast(ray.origin, ray.direction, out hitInfo, distance)){}

答案 1 :(得分:0)

要实现此目的,您可以使用Raycast()。 这是一个例子:

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

if (Physics.Raycast(ray, out hit, 10))
{
    // test what the raycast hit by checking hit information.
}

这将从主摄像机的位置投射一条光线,向前看(直接在前面),最大距离为10个单位,并在命中变量中输出命中信息,然后你可以测试它。

编辑: 由于除了head.Gaze之外你没有提供任何其他信息,我无法告诉你它的作用,但假设它被正确命名,它将与 Ray(Camera.main.transform.position)做同样的事情。 ,Camera.main.transform.forward); 所以你可以这样编写光线投射测试:

RaycastHit hit;
if (Physics.Raycast(head.Gaze, out hit, 10))
{
    // test what the raycast hit by checking hit information.
}

我们需要知道头部对象是什么以及Gaze的对象类型是什么。如果它是雷,我99.9%肯定它将作为你头脑向前看方向的射线。您可以随时测试:)