using System; using UnityEngine; namespace BaseGames.Enemies { /// /// 导航代理抽象接口(架构 07_EnemyModule §5)。 /// EnemyBase 和 BD Task 只依赖此接口,不依赖具体导航库。 /// 实现:EnemyNavAgent(PathBerserker2d);测试用 NullPathAgent。 /// public interface IPathAgent { /// 请求移动到世界坐标 target。 void RequestMoveTo(Vector2 target); /// 立即停止导航(清除路径)。 void StopNavigation(); /// 是否已到达目标(距离 ≤ stoppingDistance)。 bool IsAtDestination(); /// 运行时覆盖移动速度。 void SetSpeed(float speed); /// 当前帧是否在移动(速度 > 0.01 且有有效路径)。 bool IsMoving { get; } /// 是否接近平台边缘(脚下或前方无地面时为 true)。 bool IsNearEdge(); /// 路径寻路失败事件(目标不可达时触发)。 event Action OnNavPathFailed; } // ── 无导航 / 测试用空实现 ───────────────────────────────────────────── public sealed class NullPathAgent : IPathAgent { public void RequestMoveTo(Vector2 _) { } public void StopNavigation() { } public bool IsAtDestination() => true; public void SetSpeed(float _) { } public bool IsMoving => false; public bool IsNearEdge() => false; public event Action OnNavPathFailed { add { } remove { } } } }