【发布时间】:2011-03-11 12:45:34
【问题描述】:
所以我明白,要获得与帧速率无关的运动,我必须将基本速度乘以 (1000/delta)。它适用于代表速度的值,但是当我尝试使用加速度变量时,例如重力,它不起作用,它甚至不是独立于帧速率的。
加速度变量是否有不同的公式,还是我忘记了其他东西?
例子:
var Multiplier:Number = (GetDeltaTime()) / (1000 / 30);
jumpVelocity = -21 * Multiplier //works
gravity = 1.5 * Multiplier //dosn't work
在每一帧开始时调用它
编辑:找到解决方案,我必须对增量时间求平方。不是 100% 确定它为什么有效,但确实有效。
所以:
jumpVelocity = -21 * Multiplier //unchanged
gravity = 1.5 * Math.pow(Multiplier,2) //works now
【问题讨论】:
-
我对动作脚本一无所知,但我知道物理学,这对我来说毫无意义。你知道单位吗?你能给我们一些数字,告诉我们出了什么问题(不仅仅是“它不起作用”)吗?
-
单位是像素/30 秒。基本上,除了加速度、重力和摩擦之外,一切都有效。所有这些都会改变速度,而不是坐标。在更高的帧速率下,这些值似乎会增加(例如更快的加速度、更高的重力)。
标签: actionscript-3 physics formula