Files
zeling_v2/Assets/_Game/Scripts/Enemies/INavLinkHandler.cs
T

57 lines
2.2 KiB
C#
Raw Blame History

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