diff --git a/Assets/Tests/EditMode/Enemies/GroundNavigatorLogicTests.cs.meta b/Assets/Tests/EditMode/Enemies/GroundNavigatorLogicTests.cs.meta
new file mode 100644
index 00000000..f511e30e
--- /dev/null
+++ b/Assets/Tests/EditMode/Enemies/GroundNavigatorLogicTests.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4971f50ef8018c240a9772108815bec6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/_Game/Scripts/Enemies/IEnemyNavigator.cs.meta b/Assets/_Game/Scripts/Enemies/IEnemyNavigator.cs.meta
new file mode 100644
index 00000000..9846d503
--- /dev/null
+++ b/Assets/_Game/Scripts/Enemies/IEnemyNavigator.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2dc26764da6be0142a2e7569d285f8a8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/_Game/Scripts/Enemies/INavLinkHandler.cs b/Assets/_Game/Scripts/Enemies/INavLinkHandler.cs
index 9c797145..51f0b2ab 100644
--- a/Assets/_Game/Scripts/Enemies/INavLinkHandler.cs
+++ b/Assets/_Game/Scripts/Enemies/INavLinkHandler.cs
@@ -4,41 +4,46 @@ using UnityEngine;
namespace BaseGames.Enemies
{
///
- /// 连接段穿越能力接口(架构 07_EnemyModule §5.2)。
+ /// 连接段类型:需要"特殊动作"才能通过的一段地形(跳过缺口、下落、爬梯、传送等)。
///
- /// 实现此接口的组件(EnemyAbilityBase 子类 / EnemyMovement 等)可接管特定
- /// NavLink 类型的穿越逻辑,包括动画播放、物理推进、时序控制,完全封装在能力内部。
+ /// 项目已移除第三方寻路库,导航不再自动规划跨平台路径;本枚举与
+ /// 保留,用于**由能力驱动**的地形穿越
+ /// (例如"跳扑到另一个平台"这类招式),由 AI 决策何时使用。
+ ///
+ public enum NavLinkType
+ {
+ None,
+ Segment, // 普通地面/平台段
+ Jump,
+ Fall,
+ Corner,
+ Climb,
+ Elevator,
+ Teleport,
+ Custom
+ }
+
+ ///
+ /// 连接段穿越能力接口。
///
- /// 注册:EnemyNavAgent.Awake 自动发现当前 GameObject 上实现此接口的所有组件。
+ /// 实现此接口的组件(EnemyAbilityBase 子类 / EnemyMovement 等)负责某类
+ /// 的穿越逻辑:动画播放、物理推进、时序控制全部封装在实现内部。
///
- /// ────────────────────────────────────────────────────────────────────
- /// 如何扩展自定义 LinkType(超出 PB2d 内置 6 种之外):
- /// 1. 在 Edit → Project Settings → PathBerserker2d → NavLink Type Names 追加名字
- /// (索引从 6 开始,例如 index 6 = "wallhug")
- /// 2. 在 枚举追加同名条目(ParseLinkType 会字符串匹配)
- /// 3. 实现 INavLinkHandler,在 HandledLinkTypes 中声明该枚举值
- /// 4. EnemyNavAgent 会自动将其从 TransformBasedMovement 剥离并委托给能力
- ///
- /// 如何使用 NavTag 控制地形通行性:
- /// - 在 PathBerserker2dSettings 中为各 NavSurface 配置 NavTag(如"water"、"lava")
- /// - 通过 NavAgent.GetNavTagTraversalMultiplier(int) 配置或查询通行成本(≤0 = 禁止)
- /// - 无需在此接口扩展,PB2d 在寻路阶段自动过滤
- /// ────────────────────────────────────────────────────────────────────
+ /// 移除寻路库后,穿越不再由寻路路径自动触发,而是由 AI/能力显式发起:
+ /// 导航器报告"够不着"(),AI 据此决定是否使用
+ /// 跳扑等能力跨越地形。
///
public interface INavLinkHandler
{
/// 该处理器负责的所有连接段类型(允许一个组件处理多种类型)。
NavLinkType[] HandledLinkTypes { get; }
- ///
- /// 运行时可行性检查:能否穿越此具体连接段(距离/高度/当前状态等)。
- /// 返回 false 时 EnemyNavAgent 记录警告并让 TransformBasedMovement 兜底。
- ///
+ /// 运行时可行性检查:能否穿越此具体连接段(距离/高度/当前状态等)。
bool CanHandleLink(NavLinkType type, Vector2 linkStart, Vector2 linkEnd);
///
- /// 开始穿越。能力自行驱动动画 + 物理。
- /// onComplete 必须且只能调用一次;未调用将导致 NavAgent 永远卡在连接段。
+ /// 开始穿越。实现自行驱动动画 + 物理。
+ /// onComplete 必须且只能调用一次。
///
void BeginLinkTraversal(NavLinkType type, Vector2 linkStart, Vector2 linkEnd, Action onComplete);
diff --git a/Assets/_Game/Scripts/Enemies/Navigation/GroundNavigator.cs.meta b/Assets/_Game/Scripts/Enemies/Navigation/GroundNavigator.cs.meta
new file mode 100644
index 00000000..1df1ff67
--- /dev/null
+++ b/Assets/_Game/Scripts/Enemies/Navigation/GroundNavigator.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8caa8e247c70b7445820efe80d2da0ec
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: