UE5 - 射线检测使用详解2(球形射线检测、多球形射线检测 )
作者:hangge | 2025-10-15 09:11
射线检测是 Unreal Engine 5 中非常常用的功能之一,广泛应用于角色交互、物理检测、敌人视野、枪械射击等系统。前文我介绍了线条射线检测(Line Trace)(点击查看),本文接着介绍球形射线检测(Sphere Trace)。
二、球形射线检测
1,基本介绍
(1)检测球体与检测线条的不同表现在“Radius”引脚上,检测的球体可以被指定一个半径,使线段变成球体。
(2)可以在蓝图中使用“按通道进行球体追踪”节点与“针对 Object 进行球体追踪”节点进行球体检测。下面我将通过样例分别演示两者的使用。

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

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

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

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

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

(3)我们在射线中添加一个正方体,再次运行可以看到成功发生了碰撞。

(4)并且输出了撞击位置的坐标参数。

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

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

(3)我们射线中添加一个正方体,并将其对象类型设置为“PhysicsBody”

- 再次运行可以看到成功发生了碰撞,并且输出了撞击位置的坐标参数。

(4)如果将对象类型设置为非 PhysicsBody 的其它类型。

- 再次运行可以看到不会发生碰撞:

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

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

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

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

全部评论(0)