【发布时间】:2012-12-23 17:53:31
【问题描述】:
我正在尝试使用“阻尼”属性逐渐降低物体的速度。之后,我想使用速度移动对象的位置。它看起来像这样:
velocity.x *= velocity.damping;
velocity.y *= velocity.damping;
x += velocity.x;
y += velocity.y;
没有比这更简单的了,它工作正常,但这是我的问题:我正在使用一个 deltaTime 变量,它包含我的游戏循环的最后一次更新的时间量(以秒为单位)拿。应用速度很容易:
x += velocity.x * deltaTime;
y += velocity.y * deltaTime;
但是,当我乘以阻尼属性时,如何计算 deltaTime?我的想法是,找到 x 或 y 中的位移并将 deltaTime 乘以该位移,如下所示:
velocity.x += (velocity.x * velocity.damping - velocity.x) * deltaTime;
velocity.y += (velocity.y * velocity.damping - velocity.y) * deltaTime;
事实证明这是行不通的。我真的不明白为什么,但是当我测试它时,我不断得到不同的结果。如果我只是忽略阻尼或将其设置为 1.0,一切正常,所以问题一定出在最后两行。
【问题讨论】:
-
为什么要减去最后一段代码中的速度?
-
(velocity.x * velocity.damping) 是新的velocity.x。我从中减去原始的velocity.x,以获得差异。
标签: actionscript-3 math game-physics