using UnityEngine; using BaseGames.Combat; namespace BaseGames.Enemies { /// /// 敌人霸体组件(架构 06_CombatModule §13)。 /// Awake 时自动注入到同节点 HurtBox(无需手动 Inspector 赋值)。 /// EnemyBase 或 BehaviorDesigner 任务可调用 SetPoiseLevel / ResetPoiseLevel 切换超甲状态。 /// [RequireComponent(typeof(EnemyBase))] public class EnemyPoiseComponent : MonoBehaviour, IPoiseSource { [SerializeField] private PoiseLevel _defaultPoiseLevel = PoiseLevel.None; private PoiseLevel _currentPoiseLevel; private void Awake() { _currentPoiseLevel = _defaultPoiseLevel; // 自动注入到所有子节点 HurtBox(支持多形状受击区) foreach (var hurtBox in GetComponentsInChildren(true)) hurtBox.SetPoiseSource(this); } // ── IPoiseSource ────────────────────────────────────────────────────── /// 返回当前帧的霸体等级(供 HurtBox.ReceiveDamage 步骤 3 比较)。 public PoiseLevel GetCurrentPoiseLevel() => _currentPoiseLevel; // ── 外部 API ────────────────────────────────────────────────────────── /// 进入/退出超甲时由 EnemyBase 或 BehaviorDesigner 任务调用。 public void SetPoiseLevel(PoiseLevel level) => _currentPoiseLevel = level; /// 恢复到默认霸体等级(超甲结束时调用)。 public void ResetPoiseLevel() => _currentPoiseLevel = _defaultPoiseLevel; } }