返回 导航

UE5

hangge.com

UE5 - 野狼捕猎游戏制作教程7(使用AI控制小鹿奔跑、休息)

作者:hangge | 2026-09-26 10:19
    前文我们创建了具有各种动画效果和状态的小鹿角色蓝图,当此时小鹿还无法自主移动。之前我写过文章演示如何使用 AI 让角色移动起来(点击查看),本文在实现逻辑大体相同,不过我在随机移动的基础上又增加了个随机休息的功能,并且这次还需要判断小鹿死亡状态,下面演示如何实现。

七、使用 AI 控制小鹿奔跑、休息

1,创建行为树

在“内容浏览器”面板的空白处单击鼠标右键,执行“人工智能 > 行为树”菜单命令新建一个行为树并命名为“BT_Deer”。

2,创建黑板

(1)双击打开“BT_Deer”行为树,点击“新建黑板”按钮创建一个黑板并命名为“BB_Deer”。

(2)进入“BB_Deer”黑板,在“黑板”面板中单击“新键”按钮新建两个黑板键:
  • 一个为“向量”类型的黑板键,设置“条目名称”为“RandomLocation”,用来存储随机移动的位置。
  • 另一个为“布尔”类型的黑板键,设置“条目名称”为“isDeath”,用来表示对应角色是否已经死亡。

3,修改角色蓝图

    为了保证小鹿在死亡后 AI 不会再继续控制其奔跑、休息。我们需要对 BP_CharacterBase 这个角色蓝图中的受到伤害逻辑进行扩展,当血量将为 0 时将黑板中的 isDeath 值设置为 true,用于后续 AI 树判断。

4,创建获取随机移动位置的任务

(1)打开“BT_Deer”行为树,单击“新建任务”按钮新建一个任务,设置“命名”为“BTTask_RandomMove”后单击“保存”按钮完成创建。

(2)打开刚创建的“BTTask_RandomMove”任务,在“我的蓝图”面板中重载一个“接收执行 AI”函数。

(3)连接“Controlled Pawn”引脚到新建的“获取 Actor 位置”节点,连接“获取 Actor 位置”节点到新建的“GetRandomReachablePointinRadius”节点,设置“Radius”为 3000.0。

(4)接着新建一个“将黑板值设为向量”节点,拖曳“Key”引脚到空白处并执行“提升为变量”菜单命令新建“Key” 变量,在“细节”面板中勾选“可编辑实例”和“生成时公开”选项,连接“Random Location”引脚与“Value”引脚,在计算完成后调用一个“完成执行”节点并勾选“Succes”选项。完成后编译并保存任务。
 

5,创建休息任务

(1)打开“BT_Deer”行为树,单击“新建任务”按钮新建一个任务,设置“命名”为“BTTask_Rest”后单击“保存”按钮完成创建。

(2)打开刚创建的“BTTask_Rest”任务,添加如下逻辑,角色会有 50% 的几率进入伏地休息,休息时间为 3~5 秒不等。

6,编写行为树逻辑

(1)回到“BT_Dee”行为树,依次添加如下节点:
  • 新建一个“Selector”节点并连接到“根”节点
  • 新建一个“Sequence”节点并连接到“Selector”节点
  • 拖曳“Sequence”节点的下方接口到空白处,添加“BTTask_Random_Move”任务到序列的下方
  • 在任务右侧添加“MoveTo”节点,“BTTask_Rest”和“Wait”节点。

(2)选择左侧的“BTTask Random Move”任务,在“细节”面板中设置“Key”为“Random Location”

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

(4)使用鼠标右键单击“Sequence”节点,执行“添加装饰器”菜单命令,将“Blackboard”装饰器附加到节点上。“Blackboard”装饰器可以对节点进行一些设置,通常为条件设置,只有满足某一个条件,此节点才会被执行。
  • 然后选择装饰器,在“细节”面板中设置“观察器中止”为“Self”,这样条件不满足时将会中止此序列的执行,设置“黑板键”为“isDeath”,“键查询”为“未设置”。

7,创建 AI 控制器

(1)新建一个蓝图,在“选取父类”对话框中选择“AIController(AI 控制器)”,单击“选择”按钮,这样就可以类通过继承“AIController”创建一个子对类,将其命名为“BPC_Deer”

(2)双击打开“BPC_Deer”蓝图,在“事件开始运行”节点后连接一个“运行行为树”节点,设置“BTAsst”为“BT_Deer”

(3)进入“BP_Deer”蓝图,在“组件” 面板中选中“BP_Deer(自我)”组件, 在“细节”面板中设置“AI 控制器类” 为“BPC_Deer”

8,创建导航网格

    进入关卡,在“放置 Actor”面板中放置一个“NavMeshBoundsVolume”区域,该区域可以让 AI 在导航系统中实现移动、寻路和计算等功能。按 P 键可以观察该区域的影响范围。设置该区域的“缩放”参数,使其影响范围变得更大。

9,运行测试

(1)我们多拖拽一些“BP_Deer”蓝图到关卡中。

(2)编译保存后进入 PIE 运行模式,可以看到小鹿在 AI 的控制下会四处奔跑,并且奔跑一段距离后会停下来休息(或伏地休息、或站立休息)。

(3)我们控制野狼对小鹿发起攻击,当小鹿死亡会播放死亡动画,并且 AI 不再控制这只小鹿进行移动、休息等行为了。
评论

全部评论(0)

回到顶部