如何在格斗游戏开发中处理键盘事件?

时间:2012-08-10 02:58:41

标签: game-engine

我正在尝试开发一种涉及检测按键和组合的格斗游戏。

然而,事情比我想象的要复杂,以下是一些要点:

1)当用户快速按两次A时,该角色应该运行。

2)当用户按某些键时,说A + L + D,该角色应该被施放。

3)当角色的演员结束时,如果按下箭头键,角色应向左或向右移动,否则应该待命。

4)当角色跳跃时,它无法移动(意味着左/右箭头按键被忽略),但可以攻击。

5)需要较短间隔时间和/或订单的组合键。

依旧......

我考虑了几种方法,但无法完美解决问题。

事情变得非常重要。

有人能为我提供一些好的算法或方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您需要Finite State Machine来表示和建立您的组合状态。您的输入/按键系统或相关层需要支持以下功能:

  • 缓冲输入(因此您的输入事件排队等候,不仅仅是立即对此帧进行采样,对于在缺少输入的成本非常明显的游戏中尤为重要)
  • 计算多次按下
  • 自上次按下以来的时间(全局,同一键的本地时间)以及按下的时间。
  • 可能保留了最后n次关键操作的可靠缓冲区。

对于每个连续的组合,您的有限状态机将具有中间状态,错误的输入取消并重置状态。许多FSM状态变化条件将基于定时器和输入的组合。但是,FSM通常会对动画和跟踪状态/移动有很大帮助,而不仅仅是输入。