UE5 - AI逃跑功能实现教程(发现目标后朝反方向逃跑)
作者:hangge | 2026-08-24 08:49
在前文中我演示了如何实现一个开始时随机移动,但在发现目标后能够自动追踪并且进行攻击的 AI。本文接着演示如何实现 AI 逃跑功能,即 AI 看到玩家角色后会朝玩家角色的反方向移动。










1,准被工作
首先我们需要实现一个可以通过键盘和鼠标操纵移动的角色,以及随机移动并能发现目标的 AI。具体实现步骤可以参考我之前写的文章:
2,创建逃跑任务
(1)打开“BT_AI”行为树,单击“新建任务”按钮并执行“BTTask_BlueprintBase”菜单命令新建一个任务,设置“命名”为“Task_ReverseDistance”后单击“保存”按钮。

(2)打开“Task_ReverseDistance”,为了使得蓝图逻辑看起来更加简洁,我这里首先创建两个自定义函数。第一个是“GetBlackboardActorValue”,其功能是获取指定的 Actor 所关联的黑板中指定 key 的值,并且返回时会将 key 值转换为 Actor 返回。该方法是用于获取黑板中存储的目标角色。
- 函数逻辑如下:

(3)另一个函数是“GetReverseLocation”,其作用是计算反向逃跑时最终的位置。传入 A、B 两个 Actor,返回的 value 在 AB 射线位置上,并且距离 B 为 1500 个单位。
- 函数逻辑如下,使用“获取 Actor 位置”节点得到 A、B 的位置,将 B 位置减去 A 位置后使用“规格化”节点将向量归一后乘以 15000.0,最后再加上 B 的位置,这时就会得到 B 朝 A 的反方向移动 2000 个单位位置了。

(4)在“我的蓝图”面板中重载“接收执行 AI”函数

(5)使用“Cast TO AI”节点连接“Controlled Pawn”引脚与“Target”变量。添加“将黑板值设为向量”节点,拖拽“Key”引脚到空白处并执行“提升为变量”菜单命令创建“Key”变量,选择“Key”变量后在“细节”面板中勾选“可编辑实例”和“生成时公开”选项。

(6)最后补齐如下完整逻辑,将计算出的反方向目标位置连接到“将黑板值设为向量”节点的“Value”引脚,使用“完成执行”节点连接“将黑板值设为向量”节点并勾选“Success”选项。

3,修改行为树
(1)打开“BT_AI”行为树,对右侧的节点进行改造。在“Selector”节点的右下方新建一个“Sequence”节点,将“Task_ReverseDistance”任务和“MoveTo”节点连接到序列下方。

(2)“Task_ReverseDistance”任务节点,在“细节”面板中设置“Key”为“MoveLocation”

(3)选择“Move To”节点,设置“黑板键”为“MoveLocation”

4,运行测试
(1)运行后可以看到 AI 开始时会自动随机移动:

(2)如果 AI 发现角色目标时会朝角色目标反方向移动 1500 个单位距离,并且到位位置后会继续计算调整方向朝反方向移动 1500 个单位距离,一直逃跑下去。

全部评论(0)