之前好像有人讨论过这个问题,忘了是贴吧还是群。当时确定的相对理想(但仍然需要处理很多事)的方案是这样:
1、使用数组或者什么结构,记录一段时间内的按键操作;//比如最后100帧,记录的数据可以是一个0-255的整数来表示8个按键(4方向+4按钮)的按键状态
2、这个数组不能完全清空,只能按时间进行顶替;
3、判定指令成功的条件是,在一定时间内的操作符合出招设置;//比如↓↘→A需要在10帧内完成,而蓄←·→A要判定40帧且←要持续25帧以上
4、同时满足两个招式的条件时,要有优先级之类的设定;//比如↓↘→↓↘→A成功判定的话,要先考虑是否满足高级技能的发动条件(不同游戏会有血量、能量、能量豆、愤怒之类的资源),当条件不满足的时候发动↓↘→A的判定(或者不判定,看你的设置)
==============
当时的讨论没能解决的情况是,按帧记录的数据,并不是理想的↓↘→A这样的4帧,而是可能↓↓↓↓↓↘↘→→→→→A,或者↓→A。根据这种记录方式判定会比较复杂。是不是改为记录(或者从这个数据里提取)是否发生了某个键的按下/抬起动作来作为判定条件更合理。