之前一直用做的那个状态机运行时,但是做到连招这里时发现总是不能很好地衔接起来,后面查看了一些资料,学了下前摇,后摇,以及它们存在的意义,才明白前摇和后摇本身就是为了能够更顺滑的连招.
然后思考怎么样能够把不同的技能连贯起来,之前想的是角色状态机有很多状态,连击普攻状态,技能状态,等等。但是这样的设计就导致了几个状态之前无法很顺利的切换,所以想到了一个设计模式,命令模式.
即把不同的指令放进一个指令流中,这个指令流根据指令进行排序,(比如大根堆), 堆顶的是当前优先级最高的指令,每次 Tick 时判断是否替换当前指令,至于行为交给指令本身去做,角色控制器不管这个
后摇是当前状态到 Idle 的转换
前摇是该状态的起手式 (前摇可以蓄力)
前置状态 -> 前摇 -> 没被打断 -> 执行技能 -> 后摇 -> 被打断 -> 进入下一个状态
后摇 -> 没被打断 -> 进入 Idle
即编码阶段:
- 前摇时需要检查命令序列,判断当前是否已经被中断,被中断则进入中断后状态
- 执行阶段不能被打断 (执行 Skill)
- 后摇需要检查命令序列,判断当前是否有下一个执行状态,有的话进入下一个状态的前摇
- 命令序列可以是但不仅仅是 (执行技能,跳跃,异常状态,强制中)
- 所以实际命令读取应该是放在实体身上
- 实体的每个状态可以进入执行命令状态 (执行命令状态单独存在), 执行命令状态自行判断 1-3 阶段
- 每个实体需要自己注册都有哪些命令,以及命令的触发方式,在图中注册,然后回注册给 Controller,Controller 接收到以后开启监听
- 命令对于状态的转移需要在状态图中指定
- 命令状态默认回到 Idle 状态
- 注意:命令之间存在是否允许转移的条件,这个条件通过优先级来确定