using UnityEngine; using BaseGames.Combat; namespace BaseGames.Player { /// /// 玩家战斗组件(Phase 1 实现)。 /// 架构 05_PlayerModule §5:HitBox 直接挂在 Player Prefab 子节点上,不经过 WeaponInstance。 /// 节点:[HitBoxGround]、[HitBoxUp]、[HitBoxDown]、[HitBoxAir]。 /// public class PlayerCombat : MonoBehaviour { [SerializeField] private WeaponManager _weaponManager; [Header("HitBox(Player Prefab 子节点)")] [SerializeField] private HitBox _hitBoxGround; [SerializeField] private HitBox _hitBoxUp; [SerializeField] private HitBox _hitBoxDown; [SerializeField] private HitBox _hitBoxAir; // ── HitBox 激活(由 AttackState / Animancer 帧事件调用)───────────── public void EnableWeaponHitBox(AttackDirection dir) { var source = _weaponManager != null ? _weaponManager.ActiveWeapon?.GetSourceByDir(dir) : null; GetHitBox(dir)?.Activate(source, transform); } public void DisableWeaponHitBox(AttackDirection dir) => GetHitBox(dir)?.Deactivate(); public void DisableAllWeaponHitBoxes() { _hitBoxGround?.Deactivate(); _hitBoxUp?.Deactivate(); _hitBoxDown?.Deactivate(); _hitBoxAir?.Deactivate(); } /// 命中回调(Phase 2 §2.3 补全:增加灵力)。 internal void OnHitConfirmed(DamageInfo info) { /* Phase 2:增加灵力 */ } private HitBox GetHitBox(AttackDirection dir) => dir switch { AttackDirection.Ground => _hitBoxGround, AttackDirection.Up => _hitBoxUp, AttackDirection.Down => _hitBoxDown, AttackDirection.Air => _hitBoxAir, _ => null, }; } }