ue3dUnity中的光线投射

Unity中的光线投射

分类:
ue3d - Unity中的光线投射

Unity 中的 Raycast(光线投射)功能允许查看 Ray 是否与场景中的另一个目标对象发生碰撞,假如发生碰撞,则将命中数据保存Raycast Hit 变量中。

Raycast 有几个不同的版本,每个版本都来自不同的类,可以以不同的方式运用,但是,运用 Raycast 的最常见方法之一是运用物理类,它返回布尔值 true 或 false,这详细取决于碰撞的目标对象:

void FireRay()
{
    Ray ray = new Ray(transform.position, transform.forward);
    RaycastHit hitData;
    Physics.Raycast(ray, out hitData);
}

这样会将创建的射线发射到场景中,并将有关任何被碰撞的信息保存到 Raycast Hit 变量中。

ue3d - Unity中的光线投射

因为 Raycast 带有一个输出 Raycast Hit 参数,那么在调用它时需要指定一个 Raycast Hit 变量。

然后当函数运行时,Raycast Hit 数据将存储在指定的变量中,允许我们访问它。上面的 out字段 允许保存除了 Raycast 的返回类型之外的信息。

当然我们也可以将 Raycast 函数置于 if 条件中:

void Update()
    {
        Ray ray = new Ray(transform.position, transform.forward);
        RaycastHit hitData;
        if (Physics.Raycast(ray, out hitData))
        {
            //射线碰到了什么!!
        }
    }

以这种方式使用 Raycast 那么 if 条件中的代码只有在 Ray 实际碰撞到了物体对象时才会运行。

这很有用的,因为可以将代码限制为仅在实际存在时使用 Raycast Hit 数据或者仅在 Raycast 成功时执行操作

当然一般情况下是否成功执行在于它是否碰撞了物体对象。但是,由于 Raycast 的附加功能,也可以通过其他方式限制为碰撞到的内容。

例如限制光线的距离,排除某个层或选择是否应该忽略触发的对撞机,最终需要查看使用的 Raycast 函数的重载方法

相关信息

  • 类型:知识
  • 字数:410
  • 字符:1439
  • 平台:Unity
  • 说明:无
  • 编号:61521

热门内容

提示:3D天堂作为服务提供者,尊重网络版权及知识产权,对某些行为的发生不具备充分的监控能力,若无意间侵犯到您的权利,请 联系我们,我们会在收到信息后尽快给予处理。

本站文章版权归本站自创作者所有,未经允许不得转载!