Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / activity / role / enemy / state / AiAstonishedState.cs
@小李xl 小李xl on 23 Nov 2023 1 KB 替换翻滚美术素材
  1. using Godot;
  2.  
  3. namespace EnemyState;
  4.  
  5. /// <summary>
  6. /// 发现目标时的惊讶状态
  7. /// </summary>
  8. public class AiAstonishedState : StateBase<Enemy, AIStateEnum>
  9. {
  10. /// <summary>
  11. /// 下一个状态
  12. /// </summary>
  13. public AIStateEnum NextState;
  14. private float _timer;
  15. private object[] _args;
  16. public AiAstonishedState() : base(AIStateEnum.AiAstonished)
  17. {
  18. }
  19.  
  20. public override void Enter(AIStateEnum prev, params object[] args)
  21. {
  22. if (args.Length == 0)
  23. {
  24. Debug.Log("进入 AINormalStateEnum.AiAstonished 状态必传入下一个状态做完参数!");
  25. ChangeState(prev);
  26. return;
  27. }
  28.  
  29. _args = args;
  30. NextState = (AIStateEnum)args[0];
  31. _timer = 0.6f;
  32. //播放惊讶表情
  33. Master.AnimationPlayer.Play(AnimatorNames.Astonished);
  34. }
  35.  
  36. public override void Process(float delta)
  37. {
  38. Master.DoIdle();
  39. _timer -= delta;
  40. if (_timer <= 0)
  41. {
  42. if (_args.Length == 1)
  43. {
  44. ChangeState(NextState);
  45. }
  46. else if (_args.Length == 2)
  47. {
  48. ChangeState(NextState, _args[1]);
  49. }
  50. }
  51. }
  52. }