我正在制作一款使用加速计移动球(足球模型游戏)的游戏。
function acc(e)
physics.setGravity(e.xInstant*(screenW/4), -1*e.yInstant*(screenH/4))
end
但是这段代码并没有给出顺畅的游戏流程。你们可以帮我找正确的选择
答案 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是重力,θ是设备左右倾斜的角度。如果允许沿另一个方向倾斜,则公式稍微复杂一些。