最小 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 应该在两点之间来回走。出问题时按这个顺序排查:

  1. 导航网格覆盖到了目标点吗?(按 P 看,目标点在绿色外 = 永远到不了)
  2. AIController 附身成功了吗?(AI Debug 显示,见第 5 章工具箱)
  3. 移动请求失败的原因码?(OnMoveCompleted 的结果枚举)

第五步:换上有脑的版本

把 BeginPlay 的硬编码移动换成行为树(下一章):AIController 挂行为树组件 → 行为树根节点 + 黑板 → 巡逻点放黑板。代码量没增加多少,但获得了完整的可扩展架构。

这个最小例子的价值

它虽然简单,却覆盖了 AI 开发的全部基础设施:导航、附身、移动请求、完成回调。后面所有复杂 AI 都是长在这四件事上。先把这四件事跑通,再加感知与决策,比一上来就全套搭齐更不容易翻车。