2017-12-12战斗有限状态机FSM -第三天


1.Move和SimpleMove区别

Move不受重力影响,不会自适应刚体,针对的是碰撞体,当碰到碰撞体,会沿着碰撞体的边缘移动;

都能移动


2.角色涉及到射击

如果说,想换成刀

可以用接口实现:

2017-12-12战斗有限状态机FSM -第三天

用Knite、Gun来实现接口

然后在下面给一个接口的引用:

2017-12-12战斗有限状态机FSM -第三天

然后初始化,赋值的时候,赋值子类Knite、Gun的实例

这样就给,每个角色赋值不同的武器了


elapseTime:消逝的时间,距离上一次射击的时间


MonoBehaviour提供了Start、Awake、Update、FixedUpdate方法,如果不想用,自己定义。比如虚方法Init、FSMUpdate、FSMFixedUpdate

如何每帧更新这3个虚方法呢?



--------------

3.子类,要挂载到物体上的,必须其父类或更高层级的父类,是继承自MonoBehaviour


4.管理类:

存储状态,首选List<FSMState>

当前的行为编号:CurrentActionID

当前的 状态:CurrentState,从list里获取

构造函数初始化

AddFSMState

DeleteFSMState

PerfromTransition转变状态

2017-12-12战斗有限状态机FSM -第三天

FSM和行为树

如果一个游戏,如果状态转变太复杂,相互转变太多,不用FSM,另外FSM判断不清,代码复用不是很彻底

如果是战地3里的怪,只能话躲避,用行为树,React,付费插件;


寻路:A*和Unity内置的



5.管理类的状态

字典里的状态