chore: initial commit
This commit is contained in:
53
Assets/Scripts/Player/PlayerCombat.cs
Normal file
53
Assets/Scripts/Player/PlayerCombat.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using UnityEngine;
|
||||
using BaseGames.Combat;
|
||||
|
||||
namespace BaseGames.Player
|
||||
{
|
||||
/// <summary>
|
||||
/// 玩家战斗组件(Phase 1 实现)。
|
||||
/// 架构 05_PlayerModule §5:HitBox 直接挂在 Player Prefab 子节点上,不经过 WeaponInstance。
|
||||
/// 节点:[HitBoxGround]、[HitBoxUp]、[HitBoxDown]、[HitBoxAir]。
|
||||
/// </summary>
|
||||
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();
|
||||
}
|
||||
|
||||
/// <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,
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user