美文网首页LibGDX
LibGDX输入模块之加速度计

LibGDX输入模块之加速度计

作者: 天神Deity | 来源:发表于2017-09-06 22:07 被阅读9次

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

    相关文章

      网友评论

        本文标题:LibGDX输入模块之加速度计

        本文链接:https://www.haomeiwen.com/subject/gjavjxtx.html