LibGDX输入模块之加速度计

加速度计测量三轴上的设备加速度(至少在Android上)。 从该加速度可以得出装置的倾斜或取向。
加速度以(m/s2)为单位,如果轴指向地球中心,则其加速度将大致为-10m/s²。 如果指向相反方向,加速度将为10 m /s²。
Android设备中的轴设置如下:

LibGDX输入模块之加速度计_第1张图片
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

你可能感兴趣的:(LibGDX输入模块之加速度计)