Как из двух событий ориентации устройства я могу найти относительный крен и тангаж для управления 2D-игрой - PullRequest
2 голосов
/ 02 августа 2020

Я делаю 2D-игру-лабиринт для мобильных устройств, используя ориентацию устройства в качестве элементов управления. После прочтения https://developer.mozilla.org/en-US/docs/Web/API/Detecting_device_orientation казалось довольно простым взять значения бета и гамма из события deviceorientation согласно примеру. Однако это предполагает, что устройство будет лежать на плоской поверхности и оттуда вращаться. Было бы гораздо более интуитивно понятно взять начальный набор значений из события ориентации устройства при запуске уровня и найти относительные бета и гамма между начальным и текущим значениями, чтобы в конечном итоге определить 2D-вектор для управления направлением.

После Пытаясь достичь этого, я столкнулся с проблемой, что по какой-то причине значения альфа, бета, гамма, кажется, полностью меняются в противоположном направлении при переходе через некоторый порог. Это заставило меня читать о Gimbal Locks, Quaternions, пробовать разные JS библиотеки для попыток преобразования матриц и всевозможных видов. Все это совершенно над моей головой, и я никуда не денусь.

Короче говоря, с учетом initialAlpha, initialBeta, initialGamma, currentAlpha, currentBeta, currentGamma как мне преобразовать это в relativeBeta и relativeGamma.

Решение должно работать только на Chrome. Спасибо всем, кто может помочь предоставить пример реализации JS, ванили или любой другой библиотеки в порядке.

то есть независимо от того, какова ваша изначальная ориентация, движения, такие как это, затем будут переводиться вверх, вниз, влево и вправо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...