SuperAPI AI 工具集

ai-and-navigation

编程与开发

查看项目

更新于 11-06 16:16

技能介绍

本技能围绕 Unreal Engine 的 AI 与导航体系展开,覆盖 AIController 驱动 Pawn、行为树与黑板、导航系统与 NavMesh、EQS、AI Perception 以及 StateTree,并给出 C++ 示例与工程配置要点。

用途:用于实现敌人或 NPC 行为(巡逻、追击、攻击、逃跑、调查)、让 AI 通过真实寻路移动到位置或 Actor、编写决策逻辑与工作记忆(行为树 + 黑板),以及通过 EQS 寻找掩体、包抄或最佳攻击点等位置。

主要能力与系统组成:AIController(AAIController、UBrainComponent,AIModule)负责占有 Pawn 并启动 AI 逻辑;行为树(UBehaviorTree、UBTTaskNode、UBTDecorator、UBTService)提供 Selector/Sequence/SimpleParallel 组合、任务、装饰器与服务;黑板(UBlackboardComponent、UBlackboardData)保存类型化键值作为工作记忆;导航系统(UNavigationSystemV1、ARecastNavMesh、ANavMeshBoundsVolume,NavigationSystem)负责寻路与路径跟随(UPathFollowingComponent);EQS(UEnvQueryManager、FEnvQueryRequest、UEnvQuery)用生成器与测试对候选位置评分排序;AI Perception(UAIPerceptionComponent、UAISenseConfig_Sight/Hearing/Damage)作为刺激监听器;StateTree(UStateTreeAIComponent、UStateTree,GameplayStateTree 插件)提供层级状态机。构建依赖需在 .Build.cs 的 PublicDependencyModuleNames 中加入 "AIModule" 与 "NavigationSystem",使用 StateTree 时加入 "GameplayStateTree" 与 "StateTreeModule"。

使用方式:AIController 通过 OnPossess 调用 RunBehaviorTree 初始化黑板并启动行为树;在 Pawn 上设置 AIControllerClass 与 AutoPossessAI。C++ 中可通过 GetBlackboardComponent 的 SetValueAsObject/SetValueAsBool/SetValueAsVector 写入键值。导航方面使用 MoveToActor 或 MoveToLocation 发起移动,并通过 OnMoveCompleted 或 ReceiveMoveCompleted 委托响应完成。EQS 通过 FEnvQueryRequest::Execute 运行查询并在回调中读取最佳位置。感知在构造函数中 ConfigureSense 配置视觉等感官,并在 BeginPlay 绑定 OnTargetPerceptionUpdated。StateTree 则在 AIController 构造函数中创建 UStateTreeAIComponent 并指定 UStateTree 资产。

适用场景:需要巡逻、追击、攻击、逃跑等 NPC 行为;需要真实寻路移动;需要决策逻辑与工作记忆;需要掩体、包抄、最佳攻击点等空间决策;需要视觉、听觉、伤害感知与反应;以及希望用 StateTree 替代或补充行为树的层级状态机项目。

限制与注意事项:资料强调若干常见坑,例如缺少 NavMeshBoundsVolume 或未构建寻路数据会导致 MoveTo 静默失败;未设置 AutoPossessAI 则控制器不会占有 Pawn;Pawn 没有移动组件时路径可算但无法跟随;行为树资产未设置有效黑板数据时键值会静默解析为默认值;非实例化自定义任务在 ExecuteTask 中修改 this 会因节点共享而出现问题;应优先使用 OnTargetPerceptionUpdated 而非逐帧轮询;EQS 未在项目设置中启用时查询静默无结果;不应硬编码位置而应使用 EQS;调用 StopMovement 后再检查结果会立即收到 Aborted。版本方面,StateTree 自 UE 5.1 起可用、5.3+ 生产稳定,UStateTreeAIComponent 需 UE 5.4+。关于收费、价格、平台与具体效果,资料未提供。