Можно ли установить UIAccelerometer delta?
Я пишу игру для iOS и пытаюсь настроить ответное движение с помощью акселерометра. Поэтому, когда я запускаю игру на iPhone, все в порядке, и акселерометр реагирует без проблем. Но когда я останавливаю игровой цикл (меню паузы), а затем снова запускаю его, сущность на экране где-то прыгает, а затем через пару секунд возвращается на место. Я считаю, что это происходит из-за разницы в дельте между игровым циклом и дельтой акселерометра. Поэтому мне было интересно, есть ли способ настроить акселерометр на iPhone, чтобы он обновлял значения только при обновлении игрового цикла?
Значения от UIAccelerometer читаются так (мне просто нужна ось X) - (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
accelerometValues[0] = acceleration.x * 0.1f + accelerometValues[0] * (1.0 - 0.1f);
}
Акселерометр настроен следующим образом [[UIAccelerometer sharedAccelerometer] setUpdateInterval:1.0 / 60.0];
[[UIAccelerometer sharedAccelerometer] setDelegate:currentScene];
Сам игровой цикл взят из урока Алекса Динера
1 ответ
Когда вы делаете паузу, вы можете остановить прослушивание событий акселерометра, удалив делегата:
[[UIAccelerometer sharedAccelerometer] setDelegate:nil];
Затем просто установите акселерометр снова, когда игра возобновится. Не должно быть необходимости изменять возвращаемые данные, просто игнорируйте все данные, которые вам не нужны.