用途:在 Godot 4.3+ 中实现 AI 移动,覆盖 NavigationAgent2D/3D、转向行为(seek、flee、arrive、wander)、行为树与巡逻模式,示例不使用已废弃 API。
主要能力:导航区域与网格烘焙(编辑期或运行时,默认后台线程,可连接 bake_finished);导航层位掩码区分地面、空中、大型单位;NavigationAgent 的 target_position、path_desired_distance、target_desired_distance、avoidance_enabled、radius、time_horizon_agents 等属性;RVO 避障通过 velocity_computed 信号获取安全速度;行为树 Sequence/Selector/Action 概念;巡逻航点链加等待计时器;PATROL→CHASE→ATTACK 状态机组合;Godot 4.5+ 独立的 2D 导航服务器,可用 disable_navigation_3d=yes 编译自定义导出模板减小体积。
使用方式:场景中加入 NavigationRegion2D/3D 并指定 NavigationPolygon/NavigationMesh,烘焙后把 NavigationAgent 作为敌人节点子节点;每个物理帧调用 get_next_path_position() 计算方向,开启避障时把期望速度赋给 nav_agent.velocity 并在 velocity_computed 回调中 move_and_slide(),否则直接移动;用 is_navigation_finished() 判断到达;运行时重建可调用 $NavigationRegion2D.bake_navigation_polygon() 或 $NavigationRegion3D.bake_navigation_mesh()。
适用场景:2D/3D 敌人寻路、巡逻、追击与攻击、程序化生成或可破坏地形下的动态导航。
限制:线程烘焙在无线程支持的 Web 构建不可用;导航层不匹配会导致找不到路径;agent_radius 过大会卡在窄道;避障抖动可调大 time_horizon_agents;频繁重算路径需加节流计时器;3D 中重力需单独累加;Godot 4.7 起 map_get_closest_point_normal 返回归一化向量。具体价格与授权信息暂未提供。