UE5 - 实现AI自主收集道具功能教程(自动寻路并拾取道具)
作者:hangge | 2026-08-17 09:08
本文演示如何通过自定义行为树与黑板任务,让 AI 不断查询并锁定场景中随机散布多个道具实例,然后控制角色移动到目标位置后自动拾取并销毁道具的完整流程。





(2)打开“Task_FindItem”添加如下蓝图逻辑,通过球形射线检测获取角色身边的物品并对齐进行销毁。









1,准备工作
(1)首先我们需要是实现能在场景中一个随机生成道具的功能,具体可以参考我之前写的文章:
(2)接着打开“BP_Pickup”这个道具蓝图,选中“Box”,将“碰撞预设”设置为“Custom”,检测响应中的“Visibility”勾选上“阻挡”

(3)同时我们还需要创建行为树、黑板、AI 角色蓝图以及 AI 控制器,具体参考我前面写的文章(前文里面的 AI 任务不需要创建,本文会创建新的任务):
2,创建查找道具位置任务
(1)打开“BT_AI”行为树,在工具栏中单击“新建任务”按钮新建一个服务,设置“命名”为“Task_FindItem”并单击“保存”按钮。

(2)打开“Task_FindItem”添加如下蓝图逻辑,找到一个“BP_Pickup”实例的位置并存储到黑板的指定 key 中。

(3)注意其中的 Key 是拖曳“将黑板值设为向量”节点的“Key”引脚到空白处,执行“提升为变量”菜单命令新建一个变量。
- 然后在“细节”面板中勾选“可编辑实例”选项。完成后编译并保存蓝图。

3,创建拾取道具任务
(1)打开“BT_AI”行为树,在工具栏中单击“新建任务”按钮新建一个服务,设置“命名”为“Task_ColletItem”并单击“保存”按钮。


4,修改 AI 树
(1)打开“BT_AI”行为树,添加如下任务节点。

(2)其中“Task_FindItem”的“key”设置为“MoveLocation”

(3)其中“MoveTo”节点的“黑板键”同样设置为“MoveLocation”

5,运行测试
(1)运行游戏后,每隔两秒场景种会自动生成一个道具,如果场景种没有道具,AI 会原地等待。

(2)当有新道具出现时,AI 会自动跑向道具位置并拾取。

附:拾取道具时增加采集时间
1,功能说明
(1)上面的样例中,当 AI 移动到道具位置就能立刻拾取道具。我们如果想增加一个采集过程,即等待一段时间后才能拾取道具。比如下图,每次采集需要耗时 2 秒,采集过程中屏幕会打印出当前进度,当达到 100% 时完成采集拾取道具。然后 AI 继续下一个道具的拾取。

(2)要实现该效果可以配合“Event ReceiveTick AI”节点来实现,思路类似于我之前的文章:
2,实现过程
(1)打开拾取道具任务“Task_ColletItem”,添加如下 4 个变量:
- StartTime:开始采集时间
- CollectDuration:完成采集需要的时长,默认值设置为 2,表示 2 秒
- CollectProgress:采集进度
- Pickup:目标道具

(2)修改“接收执行 AI”节点逻辑,记录下开始采集的时间以及目标道具。

(3)然后在“接收 TickAI”节点中计算采集进度,并在进度达到 100% 时拾取道具,并执行“Finish Execute”结束任务。

全部评论(0)