Согласованное преобразование значений гироскопа на Android и iOS с помощью Matter.jsIOS

Программируем под IOS
Ответить
Anonymous
 Согласованное преобразование значений гироскопа на Android и iOS с помощью Matter.js

Сообщение Anonymous »

В своем проекте я использую демо-версию гироскопа Matter, и она отлично работает на Android. Однако мне не удалось добиться стабильных результатов на iOS.
Это соответствующий фрагмент, который я взял из демонстрации гироскопа:

Код: Выделить всё

if (window.screen.orientation.angle === 0) {
engine.gravity.x = Common.clamp(event.gamma, -90, 90) / 90
engine.gravity.y = Common.clamp(event.beta, -90, 90) / 90
} else if (window.screen.orientation.angle === 90) {
engine.gravity.x = Common.clamp(event.beta, -90, 90) / 90
engine.gravity.y = Common.clamp(-event.gamma, -90, 90) / 90
} else if (window.screen.orientation.angle === 180) {
engine.gravity.x = Common.clamp(event.gamma, -90, 90) / 90
engine.gravity.y = Common.clamp(-event.beta, -90, 90) / 90
} else if (window.screen.orientation.angle === -90) {
engine.gravity.x = Common.clamp(-event.beta, -90, 90) / 90
engine.gravity.y = Common.clamp(event.gamma, -90, 90) / 90
}
Однако, если я запущу это на своем iPad Air (5-го поколения) под управлением iOS 17.4.1, сила тяжести будет тянуться вправо, а не вниз. Я подумал, что могу пронюхать браузер и написать альтернативное преобразование бета/гаммы в x/y, что я и сделал, и это выглядит так:

Код: Выделить всё

if (window.screen.orientation.angle === 0) {
engine.gravity.x = Common.clamp(event.beta, -90, 90) / 90
engine.gravity.y = Common.clamp(-event.gamma, -90, 90) / 90
} else if (window.screen.orientation.angle === 90) {
engine.gravity.x = Common.clamp(event.gamma, -90, 90) / 90
engine.gravity.y = Common.clamp(event.beta, -90, 90) / 90
} else if (window.screen.orientation.angle === 180) {
engine.gravity.x = Common.clamp(-event.beta, -90, 90) / 90
engine.gravity.y = Common.clamp(event.gamma, -90, 90) / 90
} else if (window.screen.orientation.angle === 270) {
engine.gravity.x = Common.clamp(-event.gamma, -90, 90) / 90
engine.gravity.y = Common.clamp(-event.beta, -90, 90) / 90
}
Однако, когда мой клиент проверил вышеописанное на своем iPad Pro (3-го поколения) под управлением iOS 16.4.1, гравитация снова потянулась вправо, хотя на моем iPad она потянулась вниз.
p>
В итоге я написал небольшой инструмент, который позволяет мне наблюдать за показаниями бета/гаммы, и я могу подтвердить, что показания на iOS отличаются от показаний на Android. Я также наткнулся на эту библиотеку под названием Full Tilt, которая, по-видимому, решила эту проблему, но я не могу ее использовать, поскольку с тех пор она вышла из-под обслуживания (я собираю с помощью веб-пакета).
Кто-нибудь сталкивался с этим? Удалось ли вам с гироскопом и заставить его работать стабильно на устройствах Android и iOS?

Подробнее здесь: https://stackoverflow.com/questions/784 ... -matter-js
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»