Files
zeling_v2/Assets/Scripts/Player/PlayerCombat.cs
2026-05-08 11:04:00 +08:00

54 lines
1.9 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 UnityEngine;
using BaseGames.Combat;
namespace BaseGames.Player
{
/// <summary>
/// 玩家战斗组件Phase 1 实现)。
/// 架构 05_PlayerModule §5HitBox 直接挂在 Player Prefab 子节点上,不经过 WeaponInstance。
/// 节点:[HitBoxGround]、[HitBoxUp]、[HitBoxDown]、[HitBoxAir]。
/// </summary>
public class PlayerCombat : MonoBehaviour
{
[SerializeField] private WeaponManager _weaponManager;
[Header("HitBoxPlayer 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();
}
/// <summary>命中回调Phase 2 §2.3 补全:增加灵力)。</summary>
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,
};
}
}