我正在尝试创建一个独立帧速率的游戏,其中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