2012-08-10 54 views
0

我正在尝试开发一款涉及检测按键和组合的格斗游戏。如何在格斗游戏开发中处理键盘事件?

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

1)当用户按A键两次迅速,作用应该运行。

2)当用户按下某些键,比如说A + L + D时,角色应该投射。 3)当角色转换结束后,如果按下箭头键,角色应该向左或向右移动,否则应该待命。

4)当角色跳跃时,它不能移动(意思是左/右箭头按键被忽略),但可以攻击。

5)键组合需要短间隔时间和/或顺序。

等等...

我曾经想过多种方法,但不能完全解决问题。

事情完全是一团糟。

任何人都可以提供一些很好的算法或方法来处理这样的问题吗?

回答

0

你需要一个Finite State Machine来表示和建立你的组合状态。您的输入/按键系统或相关层将需要支持像特点:

  • 缓冲输入(所以你的输入事件被排队,并且不只是立即采样该帧,在格斗游戏尤其重要的成本丢失的输入是非常明显的)
  • 计数多台印刷机
  • 自上次按键(全局和本地相同键)以来的定时和持续按键的时间。
  • 也许保留最后一个可靠的缓冲区n关键行动。

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