Можно ли установить дельту UIAccelerometer?

Я пишу игру на 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];

Сам игровой цикл был взят из учебника Алекса Динера GameLoop Tutorial.


person Setrino    schedule 20.12.2012    source источник


Ответы (1)


Когда вы делаете паузу, вы можете перестать прослушивать события акселерометра, удалив делегата:

[[UIAccelerometer sharedAccelerometer] setDelegate:nil];

Затем просто снова настройте акселерометр, когда игра возобновится. Не должно быть необходимости изменять возвращаемые данные, просто игнорируйте любые данные, которые вам не нужны.

person Kekoa    schedule 20.12.2012
comment
Спасибо, это сработало. Я не хотел изменять какие-либо данные, но казалось, что они были кэшированы, а затем выпущены. - person Setrino; 30.12.2012
comment
Если ваш игровой цикл находится в другом потоке, а цикл выполнения этого потока не запущен, то он может поставить в очередь эти вызовы методов из акселерометра, поскольку акселерометр все еще вызывал делегата, когда игра была приостановлена. Это может быть то, что вы видели. Когда поток возобновится, все вызовы этих методов будут выполнены. - person Kekoa; 03.01.2013
comment
Это звучит разумно. Еще раз, спасибо. - person Setrino; 03.01.2013