之前一直用做的那个状态机运行时,但是做到连招这里时发现总是不能很好地衔接起来,后面查看了一些资料,学了下前摇,后摇,以及它们存在的意义,才明白前摇和后摇本身就是为了能够更顺滑的连招.

然后思考怎么样能够把不同的技能连贯起来,之前想的是角色状态机有很多状态,连击普攻状态,技能状态,等等。但是这样的设计就导致了几个状态之前无法很顺利的切换,所以想到了一个设计模式,命令模式.

即把不同的指令放进一个指令流中,这个指令流根据指令进行排序,(比如大根堆), 堆顶的是当前优先级最高的指令,每次 Tick 时判断是否替换当前指令,至于行为交给指令本身去做,角色控制器不管这个

后摇是当前状态到 Idle 的转换

前摇是该状态的起手式 (前摇可以蓄力)

前置状态 -> 前摇 -> 没被打断 -> 执行技能 -> 后摇 -> 被打断 -> 进入下一个状态

后摇 -> 没被打断 -> 进入 Idle

即编码阶段:

  • 前摇时需要检查命令序列,判断当前是否已经被中断,被中断则进入中断后状态
  • 执行阶段不能被打断 (执行 Skill)
  • 后摇需要检查命令序列,判断当前是否有下一个执行状态,有的话进入下一个状态的前摇
  • 命令序列可以是但不仅仅是 (执行技能,跳跃,异常状态,强制中)
  • 所以实际命令读取应该是放在实体身上
  • 实体的每个状态可以进入执行命令状态 (执行命令状态单独存在), 执行命令状态自行判断 1-3 阶段
  • 每个实体需要自己注册都有哪些命令,以及命令的触发方式,在图中注册,然后回注册给 Controller,Controller 接收到以后开启监听
  • 命令对于状态的转移需要在状态图中指定
  • 命令状态默认回到 Idle 状态
  • 注意:命令之间存在是否允许转移的条件,这个条件通过优先级来确定