using UnityEngine; namespace BaseGames.Player.States { /// 闲置状态。默认入口状态,播放 Idle 动画。 public class IdleState : PlayerStateBase { public IdleState(PlayerController owner) : base(owner) { } public override void OnStateEnter() { if (AnimCfg?.Idle != null) Anim.Play(AnimCfg.Idle); Move?.ZeroHorizontalVelocity(); // 着地时重置空中冲刺次数 Owner.GetState()?.ResetAerialDashes(); } public override void OnStateUpdate() { if (!Move.IsGrounded) { _owner.TransitionTo(_owner.GetState()); return; } if (Buffer.ConsumeJump()) { _owner.TransitionTo(_owner.GetState()); return; } if (Mathf.Abs(Input.MoveInput.x) > 0.1f) { _owner.TransitionTo(_owner.GetState()); } } } }