大家好,我要在我的动作侧躺游戏中进行一个实验性输入队列的实现。这个输入队列不是传统的基于时间的缓冲区或 FIFO 类型。

基本上,在这个游戏中,有一些输入事件需要和其他输入事件冲突。这里是一些需要注意的冲突项:

  1. 当玩家同时按下一次空中移动和冲刺键(下方向键)时执行落马攻击。
  2. 当玩家在空中按下一次下方向键和攻击键时执行下落突袭。
  3. 当玩家在空中按下一次下方向键和冲刺键时执行下落冲刺。
  4. 当玩家在空中按下一次冲刺键时执行横向空中冲刺。
  5. 当玩家在空中同时按下一次攻击键和冲刺键时执行空中冲刺攻击,这是一个特殊的触发动作。
  6. 玩家在任何时候按下一次防御键(格),都会开始格挡,并优先级高于其他输入事件。

为了避免对每个输入事件都硬编码,需要考虑一些矛盾的输入事件:

  1. 玩家按下一次下方向键,然后连按下一次下方向键和攻击键。无论输入顺序如何,游戏始终将队列输入下落突袭(因为平台需求)。
  2. 玩家在空中连续按下一次冲刺键,然后按下一次下方向键。游戏将优先考虑水平空中冲刺过下落冲刺。
  3. 玩家在空中按下一次下方向键(对应于方向指针在斜面位置),然后同时按下一次攻击键和冲刺键。游戏将优先考虑空中冲刺攻击。
  4. 玩家在空中同时按下一次下方向键和攻击键和冲刺键(例如急促按键)。游戏将优先考虑下落突袭。

在宽容性问题上,游戏优先考虑非移动(格挡和下落突袭)> 方向移动(冲刺和冲刺攻击)>向下移动(落马攻击和下落冲刺)。

那么,你如何实现这种类型的输入队列?我正在考虑使用一个键盘输入(指令和时间戳)和优先级分数的字典,选择恰当的输入,但我担心这在长期可能不可维持。

有没有人愿意在这方面给我一些建议呢?