我正在嘗試創建一個獨立幀速率的遊戲,其中myObject
正以每毫秒一個單位向右移動。不過,我不知道如何在這段代碼計算deltaTime
:如何正確計算時間增量?
var currentTime = 0;
var lastTime = 0;
var deltaTime = 0;
while(play) {
// Retrieve the current time
currentTime = Time.now();
deltaTime = currentTime - lastTime;
lastTime = currentTime;
// Move myObject at the rate of one unit per millisecond
myObject.x += 1 * deltaTime;
}
比方說,第一架用了30毫秒,所以deltaTime
應該是30,但它是0 因爲我們只知道在開始的時間不在幀的末尾。然後,在第二幀花了40毫秒,所以deltaTime
是30,因此myObject.x
是30.但是,經過的時間是70毫秒(第一幀30毫秒+第二幀40毫秒),所以myObject.x
應該是70,而不是30
我不是在模擬物理,我只是試圖將myObject
相對於經過的時間(不是幀)移動。
如何正確計算deltaTime
?
我知道一些遊戲引擎的人使用大塊時間或打勾,所以他們提前做動畫。另外,我已經閱讀了Glenn Fiedler的article on fixing your timestep和其他很多,但我仍然感到困惑。
你在用什麼語言進行編程? – APerson 2014-10-26 18:52:30
這看起來像JavaScript,但這是一個語言無關的問題 – 2014-10-26 18:54:04
@APerson我嘗試學習概念先生..我不打擾任何語言,只要它不會彙編 – user3578021 2014-10-26 18:55:30