2017-12-10战斗有限状态机FSM
1.https://www.processon.com/
在线做流程图
2.FSM:状态变化导致行为变化
有限的行为
有外部、内部的触发,造成转变
转变告诉给AI,AI去执行
AI执行后,反作用回状态,同步
3.可扩展性的代码
先罗列行为:巡逻Patrol、追逐Chase、攻击Attack、死亡Dead
抽离共性:FSMState父类,上面4个继承父类
单独给个类:AdvanceManager,对4个行为进行整体的管理,它控制4个行为的转换
从4个状态到AdvanceFSM,是“”管理“”关系
这个单独的类,继承自AIControl,它挂在到游戏对象上
能不能把AdvanceFSM,提一个父类FSMBase出来:
在接到一个模块和功能时,先做下面的设计:
如果增加一个状态5:ChangeBullet换子弹
很容易扩展了;利于维护;实现功能的前提下,考虑结构;
同理:界面MVC设计,都可以用设计图
---------------
什么是有限状态机?状态的转换函数
好处:简单、高效、易于扩展、模块化处理
一定要考虑清楚,转换为什么,转换的条件;
案例:Patrol巡逻,可能发现玩家了,转为Chase追逐
还可能被攻击没生命了,转为Dead
Chase追逐,可能追上了,开始Attck
可能没追上丢失了,回到Patrol
还可能被攻击没生命了,转为Dead
Attack,对方丢了,打死对方,Patrol
对方跑或其他玩家仇恨值最高了,Chase,“放风筝”
被还击,Dead
Dead,Destroy
“”发现玩家“”就是状态。Chase等,就是行为;状态驱动行为;用枚举来定义状态、行为;枚举写在管理里面,AdvanceFSM
通过“字典”来对应状态和行为,存储转换过程;
针对策略游戏,分为行为层、策略层;是多个FSM
---------------
https://img-blog.****.net/20151229191202225