0

从加速度计(在 X 和 Y 轴上)获得值后,我将这些值分配给 xSpeed 和 ySpeed 变量,然后根据这些值移动球。问题是我希望在活动开始时 xSpeed 和 ySpeed 为 0(在手机移动之前球不会移动),无论加速度计的值是多少。我想做这种校准。

对于 Y 轴,我试过这个,但不适用于手机的所有起始位置。

ball.setYSpeed(ySpeed-startAccelY);

其中 startAccelY 是 Y 轴上加速度计的起始值,ySpeed 将被分配新值。

4

2 回答 2

2

我建议您取原始起始值并从当前读数中减去它。

例如,您的代码中有一个变量:

float initialPosition = 1.4; // 1.4 is just an example, you'd set it to the reading of the accelerometer

然后,当您将当前加速度计读数应用于您的球时,您可以减去 initialPosition 值以使球移动。这样一开始,球就会出现停顿。

我希望这有帮助。

于 2012-08-15T16:25:37.690 回答
1

我假设您使用的是 TYPE_ACCELEROMETER 传感器?尝试改用 TYPE_LINEAR_ACCELERATION 传感器。它会自动从传感器读数中减去重力,因此如果您不移动手机,acln 将保持在 0(ish)。

[编辑] Api 9 +。

于 2012-08-15T16:27:24.200 回答