首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相位Arcade.Body速度是否包括deltaTime?

相位Arcade.Body速度是否包括deltaTime?
EN

Stack Overflow用户
提问于 2016-07-10 10:34:46
回答 1查看 611关注 0票数 1

我想以不断的速度沿着x轴移动我的角色。我以为移动取决于帧速率。所以,严格地说,我应该写

代码语言:javascript
复制
sprite.body.velocity.x = speed * deltaTime

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

但如果我这样做-我的角色移动vvvvverrry血淋淋,即使speed = 1000

但如果我在写

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-10 15:51:11

好吧..。我觉得我很蠢..。

我对deltaTime的计算是错误的

正确的公式是

代码语言:javascript
复制
deltaTime = (elapsedMS * fps) / 1000

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

fps -每秒帧。(只有在启用advancedTiming时才计算)。

所以这就是我的问题。

作为结果

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

会是这样的

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38290969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档