2012-08-10 51 views
0

我正在嘗試開發一款涉及檢測按鍵和組合的格鬥遊戲。如何在格鬥遊戲開發中處理鍵盤事件?

然而,事情比我想象的更復雜,下面是一些要點:

1)當用戶按A鍵兩次迅速,作用應該運行。

2)當用戶按下某些鍵,比如說A + L + D時,角色應該投射。 3)當角色轉換結束後,如果按下箭頭鍵,角色應該向左或向右移動,否則應該待命。

4)當角色跳躍時,它不能移動(意思是左/右箭頭按鍵被忽略),但可以攻擊。

5)鍵組合需要短間隔時間和/或順序。

等等...

我曾經想過多種方法,但不能完全解決問題。

事情完全是一團糟。

任何人都可以提供一些很好的算法或方法來處理這樣的問題嗎?

回答

0

你需要一個Finite State Machine來表示和建立你的組合狀態。您的輸入/按鍵系統或相關層將需要支持像特點:

  • 緩衝輸入(所以你的輸入事件被排隊,並且不只是立即採樣該幀,在格鬥遊戲尤其重要的成本丟失的輸入是非常明顯的)
  • 計數多臺印刷機
  • 自上次按鍵(全局和本地相同鍵)以來的定時和持續按鍵的時間。
  • 也許保留最後一個可靠的緩衝區n關鍵行動。

你的有限狀態機對於組合的每次連續都有中間狀態,輸入取消和重置狀態都是錯誤的。許多FSM狀態改變條件將基於定時器和輸入的組合。然而,FSM通常會對動畫和跟蹤狀態/移動有很大的幫助,而不僅僅是輸入。