加速度計測量三軸上的設備加速度(至少在Android上)。 從該加速度可以得出裝置的傾斜或取向。
加速度以(m/s2)為單位,如果軸指向地球中心,則其加速度將大致為-10m/s2。 如果指向相反方向,加速度將為10 m /s2。
Android設備中的軸設置如下:
Android的軸設置
不幸的是,平板電腦的配置是不同的。 Android設備有一個叫做默認方向的概念。 對于手機,縱向模式(如上圖所示)是默認方向。 對于平板電腦,橫向模式是默認方向。 橫向設備有自己的一套軸設置(如上圖,x軸和y軸對調)
Libgdx顯示加速度計讀數,如上圖所示,無論設備的默認方向如何(正z軸從屏幕出來,正x軸指向右側,正y軸正向沿設備向上)。
檢查可用性
不同的Android設備具有不同的硬件配置。 檢查設備是否具有加速度計可以使用如下代碼:
····java
boolean available = Gdx.input.isPeripheralAvailable(Peripheral.Accelerometer);
····
查詢設備的方向
如果您的游戲需要知道設備的當前方向,可以使用以下方法:
int orientation = Gdx.input.getRotation();
這將返回值為0,90,180或270,給出當前方向和原始方向之間的角度差異。
原始方向是縱向模式(如上圖所示)或橫向模式(主要用于平板電腦)。 可以查詢如下:
Orientation nativeOrientation = Gdx.input.getNativeOrientation();
這將返回Orientation.Landscape或Orientation.Portrait。
加速度計讀數
加速度計讀數只能通過libgdx中的輪詢進行訪問:
float accelX = Gdx.input.getAccelerometerX();
float accelY = Gdx.input.getAccelerometerY();
float accelZ = Gdx.input.getAccelerometerZ();
沒有加速度計支持的平臺或設備將返回零。
有關使用加速度計的演示,請參閱Super Jumper演示游戲。
旋轉矩陣
如果要使用設備的方向進行渲染,那么使用旋轉矩陣是一個不錯的方法。 有關說明,請參閱本鏈接。 您可以將生成的矩陣直接插入到OpenGL渲染.
Matrix4 matrix = new Matrix4();
Gdx.input.getRotationMatrix(matrix.val);
// use the matrix, Luke