为电晕游戏设置加速度计

时间:2014-02-04 05:48:11

标签: lua corona accelerometer game-physics

我正在制作一款使用加速计移动球(足球模型游戏)的游戏。

function acc(e)
   physics.setGravity(e.xInstant*(screenW/4), -1*e.yInstant*(screenH/4))
end

但是这段代码并没有给出顺畅的游戏流程。你们可以帮我找正确的选择

1 个答案:

答案 0 :(得分:1)

您需要“校准”或更改算法。我会先尝试校准:用

替换你的acc()
function acc(e)
   local calibX = 1
   local calibY = 1
   -- physics.setGravity(calibX * e.xInstant*(screenW/4), -calibY * e.yInstant*(screenH/4))
   print(e.xInstant, e.yInstant, e.zInstant)
end

并且做你认为“不光滑”的倾斜,看看你这样做时打印的值。这将告诉你什么是校准和Y应该是什么,设置它们然后取消注释物理线,注释掉打印线,再试一次,直到你做对了。例如,如果x和y瞬间大约为10,则可以尝试使用calibX = 0.1或更小。

如果找不到能够提供所需运动的校准系数的值,则需要更改算法。例如,如果您试图模拟设备的倾斜度,就好像它是一个大理石滚动的桌子,并且倾斜桌子应该使大理石移动,那么改变重力不是这样做的方法。您想要施加等于g * sin(θ)的水平力,其中g是重力,θ是设备左右倾斜的角度。如果允许沿另一个方向倾斜,则公式稍微复杂一些。