1

我已经完成了libgdx 的 SimpleApp教程。我已经通过以下方式更改了游戏的控件以使用加速度计而不是触摸输入:

  • 在 MainActivity.java

    cfg.useAccelerometer = true;
    
  • 在 DropGame.java 中

    float acc = Gdx.input.getAccelerometerY();
    bucket.x += acc * 120 * Gdx.graphics.getDeltaTime();
    

我的问题是,我如何允许两种风景?我希望能够将我的设备从一个横向方向旋转 180 度到另一个横向方向,并让游戏随之旋转。

我最接近我想要的,是android:screenOrientation="sensorLandscape"在清单中设置,但是虽然它确实在不允许纵向模式的情况下旋转屏幕,但它也反转了加速度计控件

我是 Android 和 libgdx 的新手,所以我可能错过了一些明显的东西。

提前致谢!

4

2 回答 2

3

Libgdx 加速度计 wiki(特别是本节)中,加速度计数据始终与纵向相关。

您应该使用Gdx.input.getNativeOrientation()Gdx.input.getRotation()的结果并根据需要翻转结果。

wiki 和 javadoc 在“本机”方向方面有点不一致,但它看起来确实像wiki 所说的那样(“ portait ”始终是默认方向,即使在 Android 默认为横向的平板电脑上也是如此)。

于 2013-05-25T16:16:50.960 回答
0

这是我的解决方案,基于PTs 回答

float rot = Gdx.input.getRotation() - 180;
float acc = Gdx.input.getAccelerometerY();
bucket.x += acc * BUCKET_SPEED * Gdx.graphics.getDeltaTime() * (rot / Math.abs( rot ) * -1);

现在我可以将我的设备旋转 180 度,游戏将随之而来,加速度计控制的工作方式与两种方式相同。

于 2013-05-25T16:25:09.323 回答