检测特定的摇动运动(图示:D)

时间:2011-08-22 19:19:26

标签: java android accelerometer

我正在开发Android平台游戏。我想做一个跳跃控制,基本上,你摇动手机。但是,你可能会说,我有点难过。

我有加速度计的X,Y,Z值,如何判断玩家是否在晃动手机?据我所知,这不是微不足道的......至少对我而言。

摇晃可能是错误的词,更像是将手机移动到跳跃状态。我不知道如何用文字解释它,所以这里有一个漂亮的插图:

Demo of shaking phone?

4 个答案:

答案 0 :(得分:2)

我将描述如何手动完成。

加速度计返回与物体感受到的加速度相对应的值。

例如,如果X值很高,则表示手机正在X方向加速。但是,从单个快照中你不知道这种加速是由于摇晃还是因为突然向稳定的方向移动。

因此,您正在寻找的是加速度高,然后突然非常低或负,等等。你想要的是加速度或加加速度的变化率。

在代码方面,您希望保留加速度值的历史记录,并保持运行的加加速度值(例如,最后10帧中的加速度变化)。如果此值达到阈值(正或负),那么这就是你的动摇。

当然,单独对X,Y和Z加速度执行此操作,然后添加加加速度值以获得针对阈值测试的最终值。

答案 1 :(得分:0)

您想使用Linear Acceleration Sensors来完成此任务。

只需将传感器类型放入触发器代码中,并在onSensorChanged()

中添加所需的逻辑

希望这有帮助!

答案 2 :(得分:0)

将rour加速度计坐标视为具有惯性的球。如果手机跳过球跳(Z上升,然后再下降)。

答案 3 :(得分:0)

我认为您应该将加速度计读数的时间平均为250毫秒,然后在预期的方向上查看平均值是否高于某个值(由您自行决定和应用程序的要求)。如果你的行动完成了。当你晃动时,加速度计的平均时间将基本保持中立。但我上面所描述的内容需要反复测试,以便将其划分为正确的数字,以获得更好的用户体验。