Итак, мы хотим переместить нашего персонажа - назовем его «локомотив» - на основе данных x и y акселерометра.
Теперь, если мы хотим, чтобы величина наклона влияла на скорость перемещения локомотива, мы можем просто включить значение акселерометра x или y непосредственно в наш алгоритм его движения.
Дляпример: (psuedocode)
// we'll call our accelerometer value for x 'tiltX'
// tiltX is .5; // assume that accelerometer updated the latest x value to .5
// unitOfMovement = 1; // some arbitraty increment you choose for a unit of movement
loco.x += unitOfMovement * tiltValueX;
Это приведет к тому, что loco будет перемещать это количество пикселей для каждого игрового цикла (или любого цикла, в котором вы запускаете обновления для перемещения), и здесь 1 пиксель умножается назначение акселерометра.Таким образом, если персонаж обычно перемещается на 1 пиксель вправо при полном наклоне TX (1,0), то если TiltX поступает от акселерометра со скоростью 0,5, локомотив сместится наполовину.Когда значение tiltX увеличивается, движение Loco также будет расти.
Еще один вопрос: хотите ли вы, чтобы движение было напрямую связано с частотой событий акселерометра?Вероятно, нет, поэтому вы можете использовать массив, чтобы просто хранить последние десять значений x (тоже самое для значений y), отправленных акселерометром, и использовать самое последнее среднее значение массива (сумма значений x / количество элементов в массиве) вкаждый игровой цикл.Таким образом, чувствительность будет чувствовать себя более подходящей, чем управление движением при любой частоте обновления акселерометра.