Рассчитайте желаемую скорость вашего спрайта как функцию измерения акселерометра.
Самый простой способ - использовать линейную зависимость: spriteVel = cft*accValue
, где cft - это некоторый коэффициент, показывающий, как быстро ваш спрайт будет двигаться
Другой способ - сказать, что ускорение вашего спрайта является линейной функцией измерения акселерометра: spriteAcc = cft*accValue
и вычислять скорость как линейную функцию ускорения: spriteVel = spriteInitVel + time*accValue
Это может быть легкореализована в вашей tick
функции, которая называется каждым кадром в игре следующим образом: `spriteVel + = timeSinceLastCall * accValue '
Также в этой функции обновите позицию спрайта следующим образом: spritePos = timeSinceLastCall*spriteVel
Это даст плавное и реалистичное (при использовании второго подхода) движение спрайта
Чтобы включить акселерометр, добавьте этот код в метод инициализации слоя
isAccelerometerEnabled = YES;
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:(TIMER_INTERVAL)];
, где TIMER_INTERVAL - этотребуемый для вас интервал (например, 1./30)
реализовать эту функцию в вашем слоеve акселерометр измеряет
- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate: (UIAcceleration*)acceleration{
}
Также возможно обновить ускорение / скорость / положение спрайта в этой функции
РЕДАКТИРОВАТЬ:
http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAcceleration_Class/Reference/UIAcceleration.html
- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate: (UIAcceleration*)acceleration{
}
просто взять вектор ускорения из переменной ускорения
, например, x:
float accX = [acceleration x];