技能系统中的循环控制
动作循环控制
- 动作类技能, 普攻等依赖战斗单位身体动作的技能, 其受影响的身体部位不能同时做出两个动作
- 根据技能的价值级别以及特色设计, 在可能导致冲突的两个动作之间需要明确打断关系
设计策略
无论是时间线的设计还是多段设计亦或是朴素的单段多子技能设计, 我们需要标记出每段动作的影响部位, 其意义是在于我们对所有技能通过打标记的形式来获得’技能与技能之间是否存在动作冲突’的信息.
其次, 我们需要对冲突的技能之间的 重叠释放问题, 这里本质上是一个压制规则问题.
- 冲突的动作类技能一旦释放成功, 一定打断掉所有相关旧的技能
- 如果不做上下半身分离, 普通移动视为动作, 否则为下半身动作
- 不希望被某些类型打断的时候 要禁止这些类型的技能释放 即压制类标签
举例来说
跳击技能:
- 技能类型: 上半身动作, 下半身动作
- 前摇时间压制: 禁止普通移动 禁止下半身动作 禁止上半身动作
出拳技能
- 技能类型: 上半身动作
- 前摇时间压制: 禁止上半身动作
闪避技能
- 技能类型: 上半身动作 下半身动作
- 前摇时间压制: 禁止普通移动 禁止上半身移动 禁止下半身移动
注意: 有些闪避是特色玩法 则需要额外的标签和流程来完成
闪避技能进行条件判定时先使用脚本进行预判, 如果当前存在会因动作压制闪避的技能 则先进行打断, 防止被压制
所有动作类技能额外添加是否可被闪避技能打断的标签, 单独完成闪避相关的压制处理.
设计小结: 本质上动作类循环的控制, 在流程上首先是模拟动作状态机, 其次通过压制策略对状态机的切换策略进行控制