这行代码有什么作用?我希望它会把光线投射到头部凝视的地方。我这样做 Camera.main.ScreenPointToRay(Input.mousePosition);在这里,我可以将光线投射到头部凝视而不是鼠标位置。
答案 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%肯定它将作为你头脑向前看方向的射线。您可以随时测试:)