实现与帧率无关的加速

Implementing Framerate-independent Acceleration

我正在尝试制作一个基于 HTML5 canvas 的游戏,该游戏涉及与帧速率无关的运动(对象以相同的速率移动,与 FPS 无关)。

我知道如何在以恒定速率移动的对象上实现与帧速率无关的运动。但是,在我的新游戏中,物体不会以恒定的速度移动 - 它们会加速。

我想让一个物体以每秒一个像素的速度加速,这样在每一秒结束时,物体都会在某个位置,与FPS无关,如下图(从position = 0, 速度 = 0:

Second 1: position: 1, velocity: 1
Second 2: position: 3, velocity: 2
Second 3: position: 6, velocity: 3
Second 4: position: 10, velocity: 4
...

除非我记错了,否则可以使用 position += velocity += acceleration (1).

等公式重新创建这种情况

我如何使用独立于帧率的方式实现它?

如果加速度恒定a,在时间t=0速度为V0 并且位置是 X0 然后在稍后的时间 t 速度和位置将是:

V = V0 + a t
X = X0 + V0 t + a t2/2

例如,如果我们取 a = 1 并从位置 = 0 开始,速度 = 0,并且我们以 1.0 的间隔对速度和位置进行采样:

Second 1: position: 0.5  velocity: 1
Second 2: position: 2    velocity: 2
Second 3: position: 4.5  velocity: 3
Second 4: position: 8    velocity: 4

但是我们可以计算任何时间的位置和速度。帧率没有出现在公式中。