如何调整手机在不同位置的加速度计数据。

How to adjust accelerometer data for phones held in different positions.

我正在使用 Android Studio 制作一个 LibGDX 游戏,其中外星 UFO 必须避免进入的小行星,并且 UFO 使用加速度计数据移动。

    //Gets and smoothens accelerometer data. Values for x and y are switched because the game is played in landscape mode. 
    currentAccelerometerX = Gdx.input.getAccelerometerY();
    currentAccelerometerX = currentAccelerometerX * alpha + lastAccelerometerX * (1 - alpha);
    currentAccelerometerY = Gdx.input.getAccelerometerX();
    currentAccelerometerY = currentAccelerometerY * alpha + lastAccelerometerY * (1 - alpha);

    //Moves the alien
    alien.alienX += (currentAccelerometerX * 5);
    alien.alienY -= (currentAccelerometerY * 5);

    lastAccelerometerY = currentAccelerometerY;
    lastAccelerometerX = currentAccelerometerX;

当 phone 被握住时此代码有效,因此 phone 的背面与地板平行,但这样的姿势玩一段时间后会感到不舒服。我想知道如何考虑设备的当前旋转并相应地调整 UFO 的运动。

问题似乎只出在外星人的 Y 轴位置,即 phone 的 x 加速度计数据(因为游戏是横屏模式,所以数值发生了变化)。当 phone 与地板成一定角度时,UFO 就停留在屏幕底部边缘附近。

JollyGoodSir,当新游戏开始时,拍下加速度计当前状态的快照并将其设置为您的基点。现在,当您检查加速度计的状态变化以查看倾斜度如何变化时,将其作为与该基值的增量进行比较。现在您的游戏将简单地校准到您在游戏开始时将设备放在的任何位置。快乐的日子:-)