Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / activity / role / enemy / state / AiAstonishedState.cs
@小李xl 小李xl on 22 Nov 2023 1 KB 完善ai状态机
using Godot;

namespace EnemyState;

/// <summary>
/// 发现目标时的惊讶状态
/// </summary>
public class AiAstonishedState : StateBase<Enemy, AIStateEnum>
{
    /// <summary>
    /// 下一个状态
    /// </summary>
    public AIStateEnum NextState;
    
    private float _timer;
    
    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;
        }

        NextState = (AIStateEnum)args[0];
        _timer = 0.6f;
        
        //播放惊讶表情
        Master.AnimationPlayer.Play(AnimatorNames.Astonished);
    }

    public override void Process(float delta)
    {
        Master.DoIdle();
        _timer -= delta;
        if (_timer <= 0)
        {
            ChangeState(NextState);
        }
    }
}