【问题标题】:Does Phaser Arcade.Body velocity include deltaTime or not?Phaser Arcade.Body 速度是否包括 deltaTime?
【发布时间】:2016-07-13 19:04:25
【问题描述】:

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

sprite.body.velocity.x = speed * deltaTime

在哪里deltaTime = game.time.elapsedMS / 1000;

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

如果我在写

sprite.body.velocity.x = speed

它工作正常。我的 fps = 60;


Phaser Documentation 说:

velocity - 速度或速度变化率 身体。以每秒像素为单位。

没有增量时间....

并且所有的演示都没有 deltatime

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

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

等等

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

【问题讨论】:

  • “速度”不是坐标位移。如果您需要物体平稳移动(没有加速/减速),速度应该始终相同,因此无需重新计算增量时间或 FPS。

标签: phaser-framework


【解决方案1】:

嗯....我觉得我很愚蠢...

我对@9​​87654325@ 的计算是错误的

正确的公式是

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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-09
    • 2013-06-10
    • 2021-09-25
    • 2020-03-31
    • 2013-07-20
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多