2014-02-24 44 views
0

我試圖使基於時間和FPS角色人物跳躍。使基於FPS和時間

我需要的是讓我的角色跳到最後1秒。現在我正在使用下面的代碼,它使得角色跳躍1秒。但問題是..如果fps是60個字符移動60個像素,如果FPS是30它的動作只有30個像素...我怎樣才能解決這個..

我需要角色移動60個像素,無論FPS 1秒之內。

//Below is the requestanimation frame loop 
// which runs the loop 60 to 30 times per second , 
// which vary according to browser. 

    function jumpcheck() 
    { 
    if(isjump) 
    { 
    ball.posy -=1; //make the character move 10 px based on fps.. 


    window.timeoutHandle = window.setTimeout(function() { 
    isjump = false; 
    }, 1000); 
    } 





    } 
    } 

注意:請求動畫幀fps是20到60之間的東西總是在變化。

代碼由constantinous

var lastUpdate = Date.now(); 
function jumpcheck() 
{ 
if(isjump) 
{ 
speed = 1; 
position = ball.posy; 
var now = Date.now(); 
var dt = (now - lastUpdate)/1000; 
lastUpdate = now; 
ball.posy = position + (speed * dt) 

} 
} 
+0

用你得到的時間戳作爲參數傳遞給在英國皇家空軍回調來計算增量時間,然後確定你需要多少移動你的性格。 – Sacho

回答

1

說,對於遊戲中,通常包括自上一幀到你的計算時間。這個時間通常稱爲dt增量時間。要計算新的位置,只需將傳遞的時間乘以當前的速度即可獲得新的位置。在僞代碼,這看起來是這樣的:

speed = ... 
position = ... 
dt = ... 

position = position + (speed * dt) 
+0

dt是當前時間戳嗎? – Vishnu

+0

不,'dt'是自上一幀以來的時間。你可以計算'dt'作爲兩個時間戳之間的差異。 – Constantinius

+0

好的,如何在這段代碼中將限制設置爲1秒? – Vishnu