Сейчас я работаю над мобильной игрой, используя Unity. Он предполагает использование гироскопа для определения ориентации/вращения мобильного телефона в пространстве. Мне было трудно сравнивать два кватерниона в C#. Вот мой код:
Код: Выделить всё
transform.rotation = Input.gyro.attitude; // Take the gyroscope rotation data and copy it
transform.rotation.Set(0, 0, 0, 1); // change current Quaternion rotation data of the copy
// Copy shoud now represent a vertical rotation
Angle = Quaternion.Angle(Input.gyro.attitude,); // Calculate the Angle between the 2
if (Angle < 45) // if it's almost in vertical postion start the game
/* do something */
На самом деле я пытаюсь проверить, находится ли мобильный телефон в вертикальном положении (например, если вы прикладываете его ко лбу). Я создаю копию исходной ориентации и изменяю ее на ту, которая мне нужна. После этого я сравниваю их, и если они почти одинаковы, игра может продолжаться. У меня почти нет знаний о кватернионах. Я пытался выяснить, какие значения кватернионов w, x, y, z мне следует использовать для обозначения вертикальной ориентации, но не смог найти никаких подсказок при поиске в Google. Вот почему я прошу помощи здесь.
Подробнее здесь:
https://stackoverflow.com/questions/361 ... obile-game