using Godot; namespace AiState; /// <summary> /// 发现目标时的惊讶状态 /// </summary> public class AiAstonishedState : StateBase<AiRole, AIStateEnum> { /// <summary> /// 下一个状态 /// </summary> public AIStateEnum NextState; private float _timer; private object[] _args; public AiAstonishedState() : base(AIStateEnum.AiAstonished) { } public override void Enter(AIStateEnum prev, params object[] args) { if (args.Length == 0) { Debug.Log("进入 AINormalStateEnum.AiAstonished 状态必传入下一个状态做完参数!"); ChangeState(prev); return; } _args = args; NextState = (AIStateEnum)args[0]; _timer = 0.6f; //播放惊讶表情 if (Master.AnimationPlayer.HasAnimation(AnimatorNames.Astonished)) { Master.AnimationPlayer.Play(AnimatorNames.Astonished); } } public override void Process(float delta) { Master.DoIdle(); _timer -= delta; if (_timer <= 0) { if (_args.Length == 1) { ChangeState(NextState); } else if (_args.Length == 2) { ChangeState(NextState, _args[1]); } } } }