返回 导航

UE5

hangge.com

UE5 - 射线检测使用详解1(线条射线检测、多线条射线检测 )

作者:hangge | 2025-10-14 08:40
    射线检测是 Unreal Engine 5 中非常常用的功能之一,广泛应用于角色交互、物理检测、敌人视野、枪械射击等系统。常见的射线检测方式包括:线条射线检测(Line Trace)、球形射线检测(Sphere Trace)以及胶囊体射线检测(Capsule Trace)。本文先通过样例介绍线条射线检测(Line Trace)的使用。
  • Line Trace(线条射线):最基本的,从起点到终点发射一条无厚度的线。
  • Sphere Trace(球形射线):用一条“球形路径”进行检测,相当于带厚度的射线,能模拟较宽的碰撞区域。
  • Capsule Trace(胶囊体射线):类似球形检测,但使用一个带高度的胶囊体(capsule),适合检测人物或垂直方向比较长的物体。

一、线条射线检测

1,基本介绍

    可以在蓝图中使用“按通道进行线条追踪”节点与“针对 Object 进行线条追踪”节点进行射线检测。下面我将通过样例分别演示两者的使用。

2,准备工作

(1)在“内容浏览器”面板中新建一个“Actor”类蓝图并命名为“BP_LineTrace”,双击进入蓝图,在“组件”面板中单击两次“添加”按钮,新建两个场景组件并将它们分别命名为“Start” 与“End

(2)新添加的两个场景为平级关系。

(3)拖曳“Start”组件与“End”组件到视口中的两个不同位置

3,针对 Object 进行线条追踪

(1)在“事件图表”面板中新建一个“针对 Object 进行线条追踪”节点并添加相关逻辑,进行线条射线检测。
  • 针对 Object 进行线条追踪”节点并将其连接到“事件开始运行”节点,产生射线。注意:由于是连接到“事件开始运行”节点,所以只会在开始时产生一次射线并检测一次。
  • 拖曳“Start” 组件与“End” 组件到“事件图表”面板中,新建两个“获取世界位置”节点并分别连接到“Start”引脚和“End”引脚上,得到两个组件的世界位置。
  • Object Types”引脚是一个枚举数组,只有该数组里面的物体类型能够被检测追踪。
  • 可以打开“针对 Object 进行线条追踪”节点的卷展栏并设置追踪颜色和时长。
  • 可以在蓝图中使用“Out Hit”引脚连接一个“中断命中结果"节点,从而获得撞击点的信息。在发生撞击时,“Returm Value” 引脚会输出“True”, “Out Hit”引脚会输出关于撞击的信息,如可以使用“打印字符串”节点输出撞击位置的坐标参数。

(2)将“BP_LinefTrace”蓝图拖曳到关卡中,进入 PIE 运行模式,可以看到两个组件之间生成了射线。

(3)我们射线中添加一个正方体,并将其对象类型设置为“PhysicsBody
  • 再次运行可以看到成功发生了碰撞:
  • 并且输出了撞击位置的坐标参数:

(4)如果将对象类型设置为非 PhysicsBody 的其它类型。
  • 再次运行可以看到不会发生碰撞:


4,按通道进行线条追踪

(1)在“事件图表”面板中新建一个“按通道进行线条追踪”节点并添加相关逻辑,进行线条射线检测。
  • 这里我们将“按通道进行线条追踪”节点的“Trace Channel”设置为“可视性”(Visibility

(2)将“BP_LinefTrace”蓝图拖曳到关卡中,进入 PIE 运行模式,可以看到两个组件之间生成了射线。

(3)我们射线中添加一个正方体,检测响应中勾选“可视性”(Visibility)通道的“阻挡”选项
  • 再次运行可以看到成功发生了碰撞:
  • 并且输出了撞击位置的坐标参数:

(4)如果将正方体检测响应中勾选“可视性”(Visibility)通道的“忽略”选项。
  • 再次运行可以看到不会发生碰撞:

附:多射线检测

1,基本介绍

(1)多射线检测与单一射线检测的功能差别不大,只是会碰到多个开启重叠通道的物体,并会在检测到阻挡通道后终止检测,返回存储了碰撞信息的数组。
(2)可以在蓝图中使用“按通道进行多线条追踪”节点与“针对 Object 进行多线条追踪”节点进行射线检测。下面我将通过样例前者的使用,后者同理。

2,按通道进行多线条追踪

(1)我们对上的样例稍作调整,使用“按通道进行多线条追踪”节点替换原本的节点。射线可以碰撞多个物体并将获取的信息添加到返回数组中,通常发布图片情况下可以通过“For Each Loop”节点对数组进行遍历。这里我们遍历 Out Hits 的返回值后,输出每一个碰撞的 Actor 的名字。

(2)在射线的位置添加两个立方体,同时设置立方体的“检测响应”为“重叠”,这样才可以使立方体被多射线检测的射线通过,如果多射线检测的测响应为“阻挡”,那么射线将会终止检测。

(3)后进入 PIE 运行模式,所有的立方体均被检测到了且它门的名字被成功输出。
提示:图中的绿色线段是被阻挡的线段,红色线段是可以进行正常检测的线段。绿色点是没有被阻挡的触碰点,不会影响后续检测,红色点是检测结束时触碰的点。
评论

全部评论(0)

回到顶部