38 lines
1.1 KiB
C#
38 lines
1.1 KiB
C#
using UnityEngine;
|
|
|
|
namespace BaseGames.Player.States
|
|
{
|
|
/// <summary>闲置状态。默认入口状态,播放 Idle 动画。</summary>
|
|
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<AerialDashState>()?.ResetAerialDashes();
|
|
}
|
|
|
|
public override void OnStateUpdate()
|
|
{
|
|
if (!Move.IsGrounded)
|
|
{
|
|
_owner.TransitionTo(_owner.GetState<FallState>());
|
|
return;
|
|
}
|
|
if (Buffer.ConsumeJump())
|
|
{
|
|
_owner.TransitionTo(_owner.GetState<JumpState>());
|
|
return;
|
|
}
|
|
if (Mathf.Abs(Input.MoveInput.x) > 0.1f)
|
|
{
|
|
_owner.TransitionTo(_owner.GetState<RunState>());
|
|
}
|
|
}
|
|
}
|
|
}
|