2016-05-29 83 views
2

我創建一個小遊戲作爲我的學習項目,使用Java和Libgdx。 遊戲非常簡單:2D,側視圖,用箭頭鍵控制,一切都看起來像在一個網格劃分單位(球員是1個單位高,環境潮汐是1單位高,...)。 問題在於角色的移動很快(並且必須是),所以很難只向左或向右移動一個單位。 我想知道是否可以在鍵盤的兩個輸入之間創建一個延遲,因爲運動部分處於「更新」方法中,所以每次按下它創建的鍵時,都會有5或10個輸入。 我試圖用Java定時器(如0.2或0.3秒)來處理它,每次按下按鍵時都會發生這種情況,並且無法讓程序在監聽完鍵盤之前收聽鍵盤。但我發現它很髒,所以我要求你的幫助,以更體面的方式引導我做到這一點。謝謝。兩個輸入之間的延遲java

+0

當你做GUI遊戲思考遊戲循環。看它會讓你的生活更輕鬆。 http://gameprogrammingpatterns.com/game-loop.html –

回答

0

通過比較上次使用時間和當前時間,可以輕鬆實現一種冷卻類型的東西。

double coolDownInMillis = 1200; 
double lastTime = 0; 

public void move() { 
    double now = System.currentTimeMillis(); 
    if(lastTime - now > coolDownInMillis && pressingTheRightKey()){ 
     //do what you want 
     lastTime = System.currentTimeMillis(); 
    } 
} 

或類似的東西。

+0

我認爲這會做到這一點。謝謝。 – Herawo

+0

@ Herawo如果是這樣,請將我的答案標記爲工作解決方案。 – eldo