[英]Allowing both landscape options and accelerometer with libgdx
我已經完成了libgdx的SimpleApp 教程 。 我已經通過以下方式更改了游戲的控件以使用加速度計而不是觸摸輸入:
在MainActivity.java中
cfg.useAccelerometer = true;
在DropGame.java中
float acc = Gdx.input.getAccelerometerY(); bucket.x += acc * 120 * Gdx.graphics.getDeltaTime();
我的問題是,我如何允許兩種景觀? 我希望能夠將我的設備從一個橫向方向轉動到另一個橫向,並讓游戲隨之旋轉。
我最接近我想要的是在清單中設置android:screenOrientation="sensorLandscape"
,但是當它在不允許縱向模式的情況下旋轉屏幕時,它也會反轉加速度計控件 。
我是Android和libgdx的新手,所以我可能錯過了一些明顯的東西。
提前致謝!
從Libgdx加速度計wiki (特別是本節 ),加速度計數據始終相對於縱向。
您應該使用Gdx.input.getNativeOrientation()
或Gdx.input.getRotation()的結果,並根據需要翻轉結果。
wiki和javadoc在“原生”方向上有點不一致,但它確實看起來像wiki所說的代碼 (“portait”始終是默認方向,即使在Android默認為橫向的平板電腦上)。
這是我的解決方案,基於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度,游戲將遵循和加速計控制以同樣的方式兩種方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.