2011-05-02 80 views
0

我更新的功能被稱爲像60次,而玩家是指在我的網格32個像素的步驟移動,所以玩家動作非常迅速,我想一個辦法只能收到某些鍵輸入每個喜歡10幀,仍然有我的遊戲運行在60fps。如何減慢用戶輸入?

回答

3

可以

  • 要求用戶做全鍵盤的點擊釋放每個鍵
  • 有用戶的是浮動的,而不是INT其中整數部分代表網格步排序的位置。而用戶試圖在特定方向上移動它會與一些定義的速度(如2每秒),並且當浮子的位置變爲下一個單元播放器跳至
  • 可以要求播放機停留在特定細胞某一給定的時間量(如移動。 5秒) - 從而確定速度移動的速度。
+0

請告訴我一個很好的方法來保持玩家的細胞0.5秒?我看着gameTime的成員,我看不到任何使用有 – Kaije 2011-05-02 16:43:53

+0

的,我不認爲有它的任何特定成員。我會在播放器對象中添加諸如「LastMovedTime」之類的內容,並確保不會將播放器移動到LastMovedTime + CellTime 2011-05-02 17:03:19

+0

gee ..多好的想法。爲什麼我沒有想到這一點。 – 2011-05-02 18:53:16

0

最簡單的方法就是保持時間按下一個鍵。沒有辦法減慢輸入系統的速度,所以你必須自己僞裝。這裏有一些讓你開始的僞碼。

// See if the key is currently down 
if (KeyIsDown(key)) 
{ 
    if (gameTime.TotalGameTime >= nextTime) 
    { 
    // Move the character, and indicate that you want to wait another second for movement. 
    moveTheCharacter(); 
    nextTime = gameTime.TotalGameTime + 1; 
    } 
} 

這種方法的主要優點是它總是基於時間而不是你的遊戲的幀率。所以如果你出於某種原因丟幀,你的角色仍然會以相同的速度移動。