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

时间:2014-05-02 10:08:07

标签: lua constants

function update(event) -- check if the game is over
  if gameOver == true then
    return
  end
  fWait = (wTime > 0)
  if fWait then
    wTime = wTime – 0.01
    if wTime < 0 then
      wTime = 0
    end
    return
  end
  if hasAccel==true then
    local gx, gy = getAcceleration()
    fx = gx * filter + fx * (1-filter)
    fy = gy * filter + fy * (1-filter)
    updatePlayer(fx, fy)
  end
end
stage:addEventListener(Event.ENTER FRAME, update)

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

1 个答案:

答案 0 :(得分:1)

如果没有更多信息,有点难以说,但看看这个:

local gx, gy = getAcceleration()
fx = gx * filter + fx * (1-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