实现NPC的AI-有限状态机
在代码编写方面,使用有限状态机可以避免代码中使用大量的if-else语句。
有限状态机里每个状态包含三个方法,进入,更新,退出。
public abstract class BaseState
{
public abstract void Enter();
public abstract void Update();
public abstract void Exit();
}
状态机:
public class StateMachine
{
private BaseState _currentState;
public void Update()
{
_currentState.Update();
}
public void ChangeState(BaseState state)
{
if (_currentState == state)
{
return;
}
_currentState?.Exit();
_currentState = state;
_currentState.Enter();
}
}
每种状态实现BaseState
,例如RunState
public class RunState : BaseState
{
public override void Enter()
{
// 播放run动画
}
public override void Update()
{
// 每帧更新,判断是否到达目标点
}
public override void Exit()
{
// 重置一些变量
}
}