同时允许景观选项和加速度计,libgdx(Allowing both landscape optio

2019-09-30 06:37发布

我已经完成了SimpleApp教程的libgdx。 我已经改变了控制的游戏中使用加速度计,而不是触摸输入,以下列方式:

  • 在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,所以我可能会错过一些东西明显。

提前致谢!

Answer 1:

从Libgdx加速度计维基 (具体地说本节 ),该加速度计数据总是相对于纵向。

您预计将使用的结果Gdx.input.getNativeOrientation()或Gdx.input.getRotation()和翻转的结果是必要的。

维基和javadoc的是相对于“本土”的方向有点不一致,但它看起来像代码确实在维基说的话(“波泰特”始终是默认的方向,甚至在平板电脑上的Android地方默认为横向)。



Answer 2:

这里是我的解决方案,基于PT的答案 :

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度,游戏将遵循加速计控制以同样的方式两种方式。



文章来源: Allowing both landscape options and accelerometer with libgdx