2017-12-12战斗有限状态机FSM -第三天
1.Move和SimpleMove区别
Move不受重力影响,不会自适应刚体,针对的是碰撞体,当碰到碰撞体,会沿着碰撞体的边缘移动;
都能移动
2.角色涉及到射击
如果说,想换成刀
可以用接口实现:
用Knite、Gun来实现接口
然后在下面给一个接口的引用:
然后初始化,赋值的时候,赋值子类Knite、Gun的实例
这样就给,每个角色赋值不同的武器了
elapseTime:消逝的时间,距离上一次射击的时间
MonoBehaviour提供了Start、Awake、Update、FixedUpdate方法,如果不想用,自己定义。比如虚方法Init、FSMUpdate、FSMFixedUpdate
如何每帧更新这3个虚方法呢?
--------------
3.子类,要挂载到物体上的,必须其父类或更高层级的父类,是继承自MonoBehaviour
4.管理类:
存储状态,首选List<FSMState>
当前的行为编号:CurrentActionID
当前的 状态:CurrentState,从list里获取
构造函数初始化
AddFSMState
DeleteFSMState
PerfromTransition转变状态
FSM和行为树
如果一个游戏,如果状态转变太复杂,相互转变太多,不用FSM,另外FSM判断不清,代码复用不是很彻底
如果是战地3里的怪,只能话躲避,用行为树,React,付费插件;
寻路:A*和Unity内置的
5.管理类的状态
字典里的状态