Поиск
Меню
Категории раздела
Рекомендуем
|
AкселерометрАкселерометр измеряет ускорение устройства по трем осям (по крайней мере на Android). Из этого ускорение можно получить наклона или ориентацию устройства. Ускорение измеряется в метрах на секунду в квадрате (м/сек2). Если ось направлена ​​к центру Земли, это ускорение будет примерно 10 м/сек2. Если он указывает в противоположном направлении, то ускорение будет −10 м/сек2. Оси в Android устройстве могут быть настроены следующим образом: ![]() К сожалению, эта конфигурация отличается для планшетов. Android устройства имеют так называемое понятие ориентация по умолчанию. Для телефонов портретный режим (как в изображение выше) является ориентацией по умолчанию. Для планшетов ландшафтный режим является ориентацией по умолчанию. Устройство с ландшафтной ориентацией по умолчанию имеет свои повороты осей так, что Y-ось направлена ​​вверх к меньшей стороне устройства и Libgdx заботится об этом и представляет настройку акселерометра, как показано на изображении выше, независимо от ориентация устройства по умолчанию (положительная Z-ось направлена из экрана, положительная Проверка наличия акселерометраРазличные устройства Android имеют разные конфигурации оборудования. Проверка, имеет ли устройство акселерометр может быть выполнена следующим образом: boolean available = Gdx.input.isPeripheralAvailable(Peripheral.Accelerometer); Запрос текущей/естественной ориентацииЕсли ваша игра должна знать о текущей ориентации устройства, то можно использовать следующий метод: int orientation = Gdx.input.getOrientation(); Это код вернет значение 0, 90, 180 или 270, что дает вам разницы между углом текущей ориентации и естественной ориентации. Естественной ориентацией является портретный режим (как на рисунке выше), или ландшафтный режим (в основном для планшетов). Ее можно запросить следующим образом: Orientation nativeOrientation = Gdx.input.getNativeOrientation(); Это код возвращает либо Orientation.Landscape или Orientation.Portrait. Чтение показаний акселерометраПоказания акселерометра могут быть доступны в libgdx только через опрашивание. float accelX = Gdx.input.getAccelerometerX(); Платформы или устройства, которые не имеют поддержки акселерометра вернут ноль. Смотрите игру Super Jumper для демонстрации использования акселерометра. Матрица вращенияЕсли вы хотите использовать ориентацию устройства для визуализации, то работа с матрицей вращения может быть полезной. Смотрите о матрице вращения. Вы можете включить полученную матрицу непосредственно в OpenGL визуализацию: Matrix4 matrix = new Matrix4(); |