简述游戏开发中的状态机
为什么我们需要状态机 实行较多状态的角色,把动作全写在一个部分中会导致维护成本高,拓展性低 例如:走路,跳跃,射击,躲避的相互转换,有些可以转换,有些不能,实现逻辑复杂 (满屏幕都是if - else) 状态模式switch实现 //包含着所有的状态 enum class State{StateA, StateB, StateC, ...} activeState; ... //通过switch语句切换状态,根据具体情况实现细节 switch (activeState) { case State.StateA: ... break; case State.StateB: ... break; ....... } ... 状态机的原形,用一个枚举表示当前的状态,通过填充完善switch语句实现状态之间的切换,但是依然有维护成本高拓展低的缺点(虽然确实是比用if - else堆好) Finite State Machine(FSN)有限状态机 最基本的状态机,一般来说其他状态机都是这种状态机的变体 对于状态机的理解,最好就是画个图(如图结构,方框是状态,箭头是状态之间的联系) 有限状态机强调的是状态之间的切换,以及对不同状态的封装,所以实现方法一般可以根据需求调整 以下参考了《游戏人工智能》的实现 首先需要个基类State和基类Translation //状态基类,所有状态都继承这个类