Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / activity / role / player / state / PlayerMoveState.cs
  1.  
  2. using Godot;
  3.  
  4. /// <summary>
  5. /// 移动状态
  6. /// </summary>
  7. public class PlayerMoveState : StateBase<Player, PlayerStateEnum>
  8. {
  9. public PlayerMoveState() : base(PlayerStateEnum.Move)
  10. {
  11. }
  12.  
  13. public override void Enter(PlayerStateEnum prev, params object[] args)
  14. {
  15. Master.HandleMoveInput((float)Master.GetProcessDeltaTime());
  16. PlayAnim();
  17. }
  18.  
  19. public override void Process(float delta)
  20. {
  21. if (InputManager.MoveAxis == Vector2.Zero) //停止移动
  22. {
  23. ChangeState(PlayerStateEnum.Idle);
  24. }
  25. else
  26. {
  27. if (InputManager.Roll && Master.CanRoll) //翻滚
  28. {
  29. ChangeState(PlayerStateEnum.Roll);
  30. }
  31. else //执行移动
  32. {
  33. Master.HandleMoveInput(delta);
  34. PlayAnim();
  35. }
  36. }
  37. }
  38. // 播放动画
  39. private void PlayAnim()
  40. {
  41. if ((Master.Face == FaceDirection.Right && Master.BasisVelocity.X >= 0) || Master.Face == FaceDirection.Left && Master.BasisVelocity.X <= 0) //向前走
  42. {
  43. Master.AnimatedSprite.Play(AnimatorNames.Run);
  44. }
  45. else if ((Master.Face == FaceDirection.Right && Master.BasisVelocity.X < 0) || Master.Face == FaceDirection.Left && Master.BasisVelocity.X > 0) //向后走
  46. {
  47. Master.AnimatedSprite.Play(AnimatorNames.ReverseRun);
  48. }
  49. }
  50. }