基本上我有一台控制游戏角色攻击的状态机,其时间基于动画长度.
所以例如:
我以默认状态开始,如果玩家遇到攻击按钮,则会发起攻击,切换状态并根据攻击长度设置定时器.然而,当我考虑可以取消的充电攻击,可以根据它们击中什么来移动到不同的状态的攻击,而且每个状态都有独特的处理被攻击的角色的方式,状态机变得更加复杂.
目前我有大的switch语句.我想到了多态,但是对于有很多的每个状态,需要一个新的类(开始攻击,攻击和整理攻击都需要单独的状态).
switch语句工作,但它相当大,也不像基于继承的系统那么容易修改.
关于善意的实现的任何建议?
编辑:
这是使用java.
解决方法
使用较大的状态机,您必须注意“过渡爆炸”现象.事实证明,传统的有限状态机没有提供机制来重用许多州的常用转换,所以你最终重复太多,你的状态机“爆炸”(这也违反了Do-not-Repeat-Yourself(干)原则).
因此,我建议使用分层状态机和实现技术,允许将这种状态机轻松映射到代码.有关层次状态机的更多信息,请参阅维基百科文章http://en.wikipedia.org/wiki/UML_state_machine.