我想以不断的速度沿着x轴移动我的角色。我以为移动取决于帧速率。所以,严格地说,我应该写
sprite.body.velocity.x = speed * deltaTime其中deltaTime = game.time.elapsedMS / 1000;
但如果我这样做-我的角色移动vvvvverrry血淋淋,即使speed = 1000。
但如果我在写
sprite.body.velocity.x = speed效果很好。我的fps = 60;
相位文件说:
速度()--身体速度或速度的变化率。以每秒像素为单位测量。
没有美味..。
而且所有的演示都没有美味。
http://phaser.io/examples/v2/arcade-physics/platformer-basics
http://phaser.io/examples/v2/arcade-physics/asteroids-movement
等。
所以,我不明白:我应该计算deltaTime还是只使用velocity.x
发布于 2016-07-10 15:51:11
好吧..。我觉得我很蠢..。
我对deltaTime的计算是错误的
正确的公式是
deltaTime = (elapsedMS * fps) / 1000elapsedMS -自上次更新以来的时间,以毫秒为单位,基于时间。
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;
}https://stackoverflow.com/questions/38290969
复制相似问题