using UnityEngine; namespace BaseGames.Enemies.Perception { /// /// 敌人感知系统接口。 /// EnemyBase 通过此接口与感知实现解耦,支持运行时替换。 /// 当前实现为 (纯物理射线 / 圆形范围检测)。 /// 若未来替换底层传感器实现,只需重新实现此接口,上层代码无需改动。 /// public interface IPerceptionSystem { /// 指定槽位是否已配置(用于运行前的能力检测,避免无效查询)。 bool HasSlot(string slotName); /// 指定槽位是否检测到任意目标。 bool HasAnyDetection(string slotName); /// 指定槽位是否正在检测 target 对象。 bool IsDetecting(string slotName, GameObject target); /// 返回指定槽位第一个检测到的对象,无检测则返回 null。 GameObject GetFirstDetection(string slotName); /// /// 返回指定槽位感知区域的半径(圆形区域)。 /// 槽位不存在、非圆形区域或实现不支持时返回 -1。 /// 主要供编辑器 Gizmos 绘制使用。 /// float GetSensorRadius(string slotName); /// /// 返回指定槽位检测原点相对于感知组件 transform 的偏移(X 分量已根据朝向翻转)。 /// 槽位不存在时返回 。 /// 供 EnemyBase.OnDrawGizmos 定位各感知圆心使用,避免所有圆重叠在 transform.position。 /// Vector2 GetSensorOffset(string slotName); /// 暂停或恢复感知系统(LOD / 超出活跃范围时调用)。 void SetSuspended(bool suspended); } }