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



我正在使用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;

当握住手机以使手机背面与地板平行时,此代码有效,但这样的位置在一段时间后播放起来会感到不舒服。我想知道如何考虑设备的当前旋转并相应地调整UFO的运动。

问题似乎只出在外星人的Y位置,即手机的x加速度计数据(由于游戏以横向模式进行,因此值被切换)。当手机与地板成一定角度时,UFO只是停留在屏幕的底部边缘附近。

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

最新更新