首页 文章

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

提问于
浏览
0

我正在使用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就会停留在屏幕的底部边缘附近 .

1 回答

  • 0

    JollyGoodSir,当新游戏开始时,拍摄加速度计当前状态的快照并将其设置为您的基点 . 现在,当您检查加速度计的状态以进行更改以查看倾斜的更改方式时,请将其作为此基本值的增量进行比较 . 现在,您的游戏将简单地校准到游戏开始时您携带设备的任何位置 . 快乐的时光 :-)

相关问题