根据Fps和时间使角色跳跃

时间:2014-02-24 09:32:30

标签: javascript html5

我正在尝试制作一个基于时间和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)

}
}

1 个答案:

答案 0 :(得分:1)

对于游戏,通常将自上一帧以来的时间包括在计算中。对于delta时间,此时间通常称为dt。要计算新位置,只需将传递的时间乘以当前速度即可获得新位置。在伪代码中,这看起来像这样:

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

position = position + (speed * dt)