using System; using UnityEngine; namespace BaseGames.Enemies { /// /// 连接段类型:需要"特殊动作"才能通过的一段地形(跳过缺口、下落、爬梯、传送等)。 /// /// 项目已移除第三方寻路库,导航不再自动规划跨平台路径;本枚举与 /// 保留,用于**由能力驱动**的地形穿越 /// (例如"跳扑到另一个平台"这类招式),由 AI 决策何时使用。 /// public enum NavLinkType { None, Segment, // 普通地面/平台段 Jump, Fall, Corner, Climb, Elevator, Teleport, Custom } /// /// 连接段穿越能力接口。 /// /// 实现此接口的组件(EnemyAbilityBase 子类 / EnemyMovement 等)负责某类 /// 的穿越逻辑:动画播放、物理推进、时序控制全部封装在实现内部。 /// /// 移除寻路库后,穿越不再由寻路路径自动触发,而是由 AI/能力显式发起: /// 导航器报告"够不着"(),AI 据此决定是否使用 /// 跳扑等能力跨越地形。 /// public interface INavLinkHandler { /// 该处理器负责的所有连接段类型(允许一个组件处理多种类型)。 NavLinkType[] HandledLinkTypes { get; } /// 运行时可行性检查:能否穿越此具体连接段(距离/高度/当前状态等)。 bool CanHandleLink(NavLinkType type, Vector2 linkStart, Vector2 linkEnd); /// /// 开始穿越。实现自行驱动动画 + 物理。 /// onComplete 必须且只能调用一次。 /// void BeginLinkTraversal(NavLinkType type, Vector2 linkStart, Vector2 linkEnd, Action onComplete); /// /// 强制中断穿越(敌人死亡 / 被击飞 / 场景切换时调用)。 /// 调用后不得再调用 onComplete。 /// void AbortLinkTraversal(); } }