Lua代码来更新玩家的位置和屏幕。

在上述代码中,fx和fy是什么?为什么gx乘以一个常数而fx乘以(1-常数)?

fx和fy是代表物理引擎中的力或加速度的变量。gx乘以一个常数是为了对gx进行平滑处理,通过滤波器过滤掉不符合物理特性的高频噪声,保留低频特征,从而得到更加平滑的加速度值。而fx的平滑处理则是要保留之前已有的效果,所以用一个(1-常数)来保留之前的值。

点赞
用户869951
用户869951

很难没有更多信息就下结论,但是看这个:

local gx, gy = getAcceleration()
fx = gx * filter + fx * (1-filter)

这是获取设备的加速度。根据 filter 没有物理单位的事实,fx 也是加速度(尽管有时开发者会缺省单位,通过对时间周期等做出假设,但我不认为这是这种情况)。

  • 如果 filter 为 0,则新的 fx 就是上一个 fx,每次调用此 update(event) 时都是如此(关于如何计算 fx 没有更多信息,它可能在程序的其他部分得到更新)。
  • 如果 filter 为 1,则 fx 只是设备加速度 gx,而没有考虑上一个 fx 值。

因此,filter 看起来是设备加速度给予相对权重的一种方式:当权重为零时,没有使用设备加速度,所以 fx 只是迄今为止计算出的任何东西。当权重为 1 时,fx 完全由设备加速度决定,因此只是 gx。对于所有其他中间值,更新的 fx 是重力和先前 fx 的比例混合:filter=0.25 意味着使用 1/4 的设备加速度作用,以及迄今为止计算出的其他部分(1-1/4 或 3/4 的 fx)。

2014-05-04 05:17:59