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;
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;
}
我想以恒定速度沿 x 轴移动我的角色。我认为移动取决于帧速率。所以,技术上我应该写
sprite.body.velocity.x = speed * deltaTime
其中 deltaTime = game.time.elapsedMS / 1000;
但如果我这样做 - 我的角色会移动得很慢,即使 speed = 1000
.
但是如果我在写
sprite.body.velocity.x = speed
它工作正常。我的帧率 = 60;
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;
}