Godot Engine:格斗游戏中的必杀技(大招/绝招/特殊技/Special Move )输入系统实现
文章目录 前言 基本原理 计时器 输入(事件)队列 调用角色必杀技 隐藏问题 完整的GDScript版必杀技输入系统 前言 必杀技系统是格斗游戏中必不可少的元素,要触发角色的必杀技,必须在一个很短的时间内,准确无误地输入一个按键序列,比如下表中街霸角色隆的部分必杀技: 必杀技 按键序列 波动拳 下,前,拳 升龙拳 前,下,前,拳 在上表中还能发现一个隐藏问题,例如:波动拳的 下,前,拳 是升龙拳 前,下,前,拳 的子序列,如果处理不当那么升龙拳可能永远不会被触发。 基本原理 计时器 直接使用 帧 作为计时单位,既准确又方便 输入(事件)队列 当输入(事件)队列和出招表的每一个必杀比较时,如果队列的长度大于必杀的指令长度,需要删除队列头部的元素以使它们长度相同 调用角色必杀技 这个系统只处理用户输入,完整实现角色的必杀技还需要结合状态机,比如用户输入了 下,前,拳 ,本系统把用户想触发波动拳的消息交发送给状态机,状态机决定角色是否能发出波动拳。 隐藏问题 上面隐藏问题的处理,实际上就是把处理升龙拳的优先级提前,实际上就是在字典中把升龙拳放前面: var combos : Dictionary = { "Shoryuken" : [ RIGHT , DOWN , RIGHT , A ] , "Hadoken" : [ DOWN , RIGHT , A ] }