Реакция на наклон iPhone в Sprite Kit

Я уже довольно давно создаю игру Sprite Kit. Совсем недавно я добавлял функции гироскопа/наклона. Используя CMMotionManager, я на удивление легко получил доступ к номерам. Однако моя проблема возникает из-за того, как хранятся значения acceleration.x.

Видите ли, как работает моя игра, когда игра запускается, телефон быстро калибрует себя в соответствии с тем, как его держат в данный момент, а затем я реагирую на изменения значения Acceleration.x (удерживая телефон в альбомной ориентации, это эквивалентно наклоняя экран к себе и от себя.) Однако если положить телефон горизонтально, это 1,0, а наклонить его прямо к себе — 0,0, а затем он возвращается к этим значениям, если вы выходите за рамки этого. Таким образом, если кто-то сидит прямо и его телефон откалиброван на 0,1, и он наклоняет свой телефон на 0,2 вниз, результаты будут не такими, как ожидалось.

Есть ли простой способ противодействовать этому?


person Community    schedule 01.10.2014    source источник


Ответы (1)


Почему вы пытаетесь сделать свою собственную систему для этого? Вы не должны использовать значения акселерометра напрямую.

Существует класс CMAttitude, который содержит всю информацию об ориентации устройства.

Эта ориентация не берется в исходном виде из данных акселерометра, а использует комбинацию акселерометров, гироскопов и магнитометра для расчета текущего положения устройства.

Затем вы можете взять значения roll, pitch и yaw и использовать их вместо того, чтобы вычислять их самостоятельно.

Документация по классу для CMAttitude.

person Fogmeister    schedule 01.10.2014