【问题标题】:To set accelerometer for corona game为电晕游戏设置加速度计
【发布时间】:2014-02-04 05:48:11
【问题描述】:

我正在创建一个使用加速度计移动球的游戏(足球模型游戏)。

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

但是这段代码不能提供流畅的游戏流程。你们能帮我找到正确的选择吗

【问题讨论】:

  • 流畅是什么意思?您将重力设置为自上次调用以来设备加速度的变化。因此,当设备静止或以恒定速度移动时,您的物理重力为零。如果现在用户将设备向上加速 1.2,则重力为 -1.2。这是你想要的吗?
  • 嗨,当我倾斜设备时,球移动得非常快的问题。当我以很小的角度倾斜时,上面的代码会产生速度运动。
  • 如果你有其他新建议..请评论

标签: lua coronasdk accelerometer game-physics


【解决方案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

并做你觉得“不平滑”的倾斜,看看你这样做时打印的值。这将告诉你 calibX 和 Y 应该是什么,设置它们然后取消注释物理行,注释掉打印行,再试一次,直到你做对了。例如,如果 x 和 y 瞬间在 10 左右,您可以尝试 calibX = 0.1 或更小。

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

【讨论】:

  • 好奇你最终使用了哪种方法。
猜你喜欢
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
相关资源
最近更新 更多