Я работаю над игрой SpriteKit, которая использует CMMotionManager для перемещения объекта на основе данных акселерометра и гироскопа. В настоящее время он отлично работает, если я тестирую приложение, и у меня есть устройство в руках, пока я сижу или стою. Однако, если вы кладете так, чтобы устройство не было плоским, а скорее наклонено на оси x (в ландшафтном режиме) с самого начала, объект перемещается в нижнюю часть, и поскольку эта ссылка находится так далеко, объект и играть в игру. Поэтому мне любопытно, как, если это возможно, обнаружить, что устройство не укладывается на плоскую поверхность и соответствующим образом регулирует опорные точки акселерометра/гироскопа.Есть ли способ изменить ссылку акселерометра на устройстве iOS
3
A
ответ
0
Вы можете сохранить копию Attitude во время запуска и использовать его в дальнейшем в качестве эталона для расчета движения:
class MotionManagerSingleton {
let motionManager = CMMotionManager()
var referenceAttitude: CMAttitude?
override init() {
motionManager = CMMotionManager()
motionManager.deviceMotionUpdateInterval = 0.25
motionManager.startDeviceMotionUpdates()
calibrate()
}
func calibrate() {
referenceAttitude = motionManager.deviceMotion?.attitude.copy() as? CMAttitude
}
func getMotionVector() -> CGVector {
// Motion
let attitude = motionManager.deviceMotion?.attitude;
// Use start orientation to calibrate
attitude!.multiplyByInverseOfAttitude(sharedInstance.referenceAttitude!)
return CGVector(dx: attitude!.pitch, dy: attitude!.roll)
}
}
Смежные вопросы
- 1. Есть ли способ изменить размер шрифта на всем устройстве Android
- 2. Есть ли способ передать ссылку на объект?
- 3. Есть ли способ распечатать ссылку на консоль?
- 4. Есть ли способ сделать указатель на ссылку?
- 5. Есть ли способ изменить изображение уведомления
- 6. Есть ли способ запросить, какие другие приложения находятся на устройстве
- 7. Запись кадры iOS-акселерометра
- 8. Есть ли способ изменить ссылку password_reset_confirm, отправленную django?
- 9. Есть ли способ определить, может ли видео воспроизводиться на устройстве?
- 10. Можно ли моделировать движение акселерометра на реальном (не эмулированном) устройстве?
- 11. Есть ли способ создать функцию запуска и остановки моего акселерометра?
- 12. Есть ли способ изменить время?
- 13. Есть ли способ изменить FILTER_SANITIZE_STRING
- 14. Есть ли способ заставить ваше устройство уведомлений iOS pushToken изменить?
- 15. Есть ли способ установить профиль обеспечения на устройстве iOS без Xcode в iTunes?
- 16. (iOS) Способ просмотра сообщений журнала непосредственно на устройстве iOS?
- 17. Есть ли способ изменить значение [CLLocationManager authorizationStatus] на
- 18. Есть ли способ предоставить тост-сообщение на устройстве износа андроида?
- 19. есть ли способ уничтожить magiczoomplus на мобильном устройстве - javascript/jquery
- 20. Есть ли способ запросить значения ресурсов на устройстве Android?
- 21. Есть ли способ получить информацию с камеры на устройстве Android?
- 22. Есть ли способ программно выполнить сброс настроек на устройстве Android?
- 23. Есть ли способ безопасно хранить данные пользователя на устройстве Android?
- 24. Есть ли способ аннулировать подписанный канал календаря на устройстве?
- 25. Есть ли способ протестировать приложение на реальном устройстве без публикации?
- 26. Typcript - есть ли способ указать глобальную ссылку?
- 27. Есть ли способ сделать ссылку UNIQUE
- 28. Есть ли способ изменить SONAME бинарного напрямую?
- 29. Точность акселерометра и гироскопа в мобильном устройстве
- 30. Есть ли способ добавить ссылку на этот код?
Ваша функция калибровать вызывает сбой, потому что 'motionManager.deviceMotion .attitude' равна нулю а затем, когда я вызываю getMotionVector, он принудительно распаковывает значение nil здесь 'sharedInstance.referenceAttitude!' –
Извините, это было всего лишь подмножество всего материала. Я написал сообщение в блоге об этом некоторое время назад: http://developerplayground.net/?p=19 – Stefan