最小 AI:五分钟跑起来一个巡逻兵
理论说完,跑一个最小的:一个会在两个点之间巡逻的 AI。它不需要行为树,但能验证整个"控制者 / 移动 / 导航"链路。
第一步:场景里放导航
- 地面 StaticMesh 上按
P看导航网格是否覆盖(绿色区域 = 可到达); - 如果没有,在场景里加
NavMeshBoundsVolume并拉伸覆盖地面,再按 P 确认绿色出现。
没有导航就没有一切 AI 移动。这一步是后面所有 AI 的前提。
第二步:准备一个 Pawn
一个简单的 Character(胶囊 + 骨架网格 + 角色移动组件),注意:
- 角色移动组件的"导航移动"设置与基础速度;
- Pawn 的 Auto Possess AI 选项设置为 "Placed in World or Spawned"。
第三步:AIController 蓝图
创建一个 AIController 蓝图,BeginPlay 里:
循环:
MoveToLocation(巡逻点A)
等到达
MoveToLocation(巡逻点B)
等到达
UE 蓝图里没有"等待到达"的现成节点,用事件:OnMoveCompleted 事件触发时,切换目标点再 MoveTo。这就是一个状态机的雏形。
第四步:验证
按播放,AI 应该在两点之间来回走。出问题时按这个顺序排查:
- 导航网格覆盖到了目标点吗?(按 P 看,目标点在绿色外 = 永远到不了)
- AIController 附身成功了吗?(
AI Debug显示,见第 5 章工具箱) - 移动请求失败的原因码?(OnMoveCompleted 的结果枚举)
第五步:换上有脑的版本
把 BeginPlay 的硬编码移动换成行为树(下一章):AIController 挂行为树组件 → 行为树根节点 + 黑板 → 巡逻点放黑板。代码量没增加多少,但获得了完整的可扩展架构。
这个最小例子的价值
它虽然简单,却覆盖了 AI 开发的全部基础设施:导航、附身、移动请求、完成回调。后面所有复杂 AI 都是长在这四件事上。先把这四件事跑通,再加感知与决策,比一上来就全套搭齐更不容易翻车。
