Phaser Arcade.Body velocity 是否包含 deltaTime?

Does Phaser Arcade.Body velocity include deltaTime or not?

我想以恒定速度沿 x 轴移动我的角色。我认为移动取决于帧速率。所以,技术上我应该写

sprite.body.velocity.x = speed * deltaTime

其中 deltaTime = game.time.elapsedMS / 1000;

但如果我这样做 - 我的角色会移动得很慢,即使 speed = 1000.

但是如果我在写

sprite.body.velocity.x = speed

它工作正常。我的帧率 = 60;


Phaser Documentation 说:

velocity - The velocity, or rate of change in speed of the Body. Measured in pixels per second.

没有增量时间....

并且所有演示都没有deltatime

http://phaser.io/examples/v2/arcade-physics/platformer-basics

http://phaser.io/examples/v2/arcade-physics/asteroids-movement

等等

所以,我不明白:我应该计算 deltaTime 还是只使用 velocity.x

嗯....我觉得我很笨...

我的deltaTime计算错了

正确的公式是

deltaTime = (elapsedMS * fps) / 1000

elapsedMS - 自上次更新以来的时间,以毫秒为单位,基于时间。

fps - 每秒帧数。 (仅在启用 advancedTiming 时计算)。

所以,那是我的问题。


作为结果

body.velocity 不包括 deltaTime 的计算,为了平滑移动应该使用由上面的公式计算的 deltaTime。

而且会是这样的

function update() { // <-- it is phaser state method...is called every frame
    deltaTime = (elapsedMS * fps) / 1000;
    sprite.body.velocity.x = velocityX * deltaTime;
    sprite.body.velocity.y = velocityY * deltaTime;
}