小编use*_*021的帖子

如何正确计算时间增量?

我正在尝试创建一款具有独立帧速率的游戏,其中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;       
}
Run Code Online (Sandbox Code Playgroud)

假设第一帧花了 30 毫秒,所以deltaTime应该是 30,但它是 0,因为我们只知道帧开始的时间而不是帧结束的时间。然后,在第二帧中花费了 40 毫秒,因此deltaTime是 30,因此myObject.x是 30。但是,经过的时间是 70 毫秒(第一帧中的 30 毫秒 + 第二帧中的 40 毫秒),因此myObject.x应该是 70,而不是 …

language-agnostic game-engine game-physics

3
推荐指数
1
解决办法
8912
查看次数