Главная » Разработка для Windows Phone 7 » Применение акселерометра в игровых приложениях Windows Phone 7

0

Если главным инструментом пользовательского интерфейса в Windows Phone 7 является касание, то что является вторым по значимости? Конечно, все зависит от поставленной задачи, но во многих приложениях на Silverlight, я полагаю, большую роль по-прежнему будет играть клавиатура. А вот в приложениях на XNA вторым по значимости инструментом пользовательского интерфейса, вероятно, будет акселерометр, особенно в аркадных играх, где перемещение самого телефона может заменить традиционные органы ручного управления. Возьмем, к примеру, игру-симулятор автогонок по треку или городу. Повороты налево и направо могут быть реализованы посредством наклонения телефона вправо и влево, а наклонением телефона вперед и назад можно управлять педалью газа, например.

Трехмерные векторы

и при левостороннем альбомном расположении:

Как было показано в главе 5, акселерометр телефона предоставляет данные в виде трехмерного вектора (x, y, z), описываемого в фиксированной относительно телефона системе координат. Система координат акселерометра остается фиксированной независимо от ориентации телефона и в портретном режиме:

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

Я сказал «приблизительно», потому что акселерометр телефона не является прибором высокой точности. Модуль вектора должен выражаться в единицах ускорения свободного падения на поверхности земли, которое традиционно обозначают g, и которое равно примерно 9,8 м/с2. Но обычно акселерометр телефона дает до 5% погрешности в измерениях.

Составляющие X, Y и Z показаний акселерометра телефона, лежащего на плоской поверхности, могут также давать несколько процентов погрешности. В приложения реализации плотницкого уровня, использующие акселерометр, обычно включена опция для «калибровки» акселерометра, которая на самом деле обеспечивает настройку всех будущих показаний относительно показаниям, фиксируемым в момент нажатия кнопки «калибровать» пользователем.

Значение 0,7 в примере – это приближенный квадратный корень из Уг. Если найти модуль вектора ускорения по теореме Пифагора

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

В данной главе для сглаживания данных я буду применять очень простую методику фильтрации нижних частот и не буду касаться вопросов калибровки. Библиотеку, которая поможет при решении обоих этих вопросов, можно найти в статье блога Дейва Эдсона (Dave Edson) «Using the Accelerometer on Windows Phone 7»[26] по адресу

http://windowsteamblog.com/windows phone/b/wpdev/archive/2010/09/08/using-the- accelerometer-on-windows-phone-7.aspx.

Во все приложения данной главы должны быть включены ссылки на сборку Microsoft.Devices.Sensors и директивы using для пространства имен Microsoft.Devices.Sensors.

Источник: Чарльз Петзольд, Программируем Windows Phone 7, Microsoft Press, © 2011.

По теме:

  • Комментарии