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-常数)?
答案 0 :(得分:1)
如果没有更多信息,有点难以说,但看看这个:
local gx, gy = getAcceleration()
fx = gx * filter + fx * (1-filter)
这可以加速设备。基于过滤器没有物理单位的事实,fx
也是加速度(尽管有时候开发人员通过对时间段做出假设而采取快捷方式和删除单位,但我不认为这是这种情况) 。
update(event)
时(没有关于如何计算fx的信息,它也可能在程序的其他部分更新)。 所以看起来filter
是赋予设备加速度的相对权重:当权重为零时,没有使用设备加速,因此fx
只是到目前为止计算的任何内容;当权重为1时,fx
完全归因于设备加速,因此它只是gx
。对于所有其他中间值,更新的fx
是重力与fx的先前值的比例混合:filter = 0.25表示使用1/4设备加速的效果,其余(1-1 / 4或3) / 4)到目前为止计算的fx
。