多轮审查和修复
This commit is contained in:
46
Assets/Scripts/Player/States/ParryState.cs
Normal file
46
Assets/Scripts/Player/States/ParryState.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
namespace BaseGames.Player.States
|
||||
{
|
||||
/// <summary>
|
||||
/// 弹反预备状态(架构 05_PlayerModule §2,完整实现在 Week 6)。
|
||||
/// 开启 ParrySystem 弹反窗口,播放 ParryStart 动画;
|
||||
/// 成功弹反后 ParrySystem.ConsumeParry() 返回 true,HurtBox 不处理该次伤害。
|
||||
/// </summary>
|
||||
public class ParryState : PlayerStateBase
|
||||
{
|
||||
public ParryState(PlayerController owner) : base(owner) { }
|
||||
|
||||
public override void OnStateEnter()
|
||||
{
|
||||
// 开启弹反窗口(HurtBox.ReceiveDamage 步骤 2 查询)
|
||||
Owner.Parry?.OpenParryWindow();
|
||||
|
||||
// 停止移动
|
||||
Move?.ZeroHorizontalVelocity();
|
||||
|
||||
// 播放弹反预备动画
|
||||
if (AnimCfg?.ParryStart != null)
|
||||
{
|
||||
var state = Anim?.Play(AnimCfg.ParryStart);
|
||||
if (state != null)
|
||||
{
|
||||
state.Events(this).OnEnd = OnParryEnd;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 无动画则立即结束
|
||||
OnParryEnd();
|
||||
}
|
||||
|
||||
public override void OnStateExit()
|
||||
{
|
||||
// 确保弹反窗口关闭(无论是否成功)
|
||||
Owner.Parry?.CloseParryWindow();
|
||||
}
|
||||
|
||||
private void OnParryEnd()
|
||||
{
|
||||
Owner.TransitionTo(Owner.GetState<IdleState>());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user