CCSprite недостаточно быстро перерисовывается с помощью UIAccelerometer? - PullRequest
0 голосов
/ 03 декабря 2011

В моей игре мой главный герой - CCSprite.То, что CCSprite является контроллером UIAccelerometer, я включил метод акселерометра, выполнив self.isAccelerometerEnabled = YES;, а затем установил updateInterval в: 1/30.

Проблема не в том, что мои значения ускорения не являются действительными хорошими значениями, аэто связано с тем, что мой CCSprite недостаточно быстро перерисовывается.Поэтому, если мой CCSprite перемещается на много пикселей в секунду, спрайт начинает мерцать, и чем быстрее он становится, тем больше он мерцает.

Я объявил свои значения ускорения в своем .h и установил их вМетод делегирования акселерометра, затем я устанавливаю положение CCSprite в моем игровом цикле.

Любые идеи, почему это может происходить?

Спасибо!

Редактировать : Код акселерометра:

float accelX = (acceleration.x - [[NSUserDefaults standardUserDefaults] floatForKey:@"X-Calibrate"]);
rollingX = (accelX * kFilteringFactor) + (rollingX * (1.0 - kFilteringFactor));
AccelPoint.x += (rollingX*50);

Ответы [ 2 ]

2 голосов
/ 03 декабря 2011

Мерцающий спрайт указывает на ошибку где-то еще.Если только вы не имеете в виду, что у спрайта есть какое-то "нервное" движение.Если вы этого еще не сделали, вам следует добавить фильтрацию акселерометра для сглаживания входных значений акселерометра.

Кстати, Kobold2D имеет наиболее часто используемую фильтрацию акселерометра (верхний и нижний проход) уже встроен.

1 голос
/ 14 декабря 2011

Вы должны обновить позицию спрайтов в методе обновления, а не в методе акселерометра.(Если вы еще этого не сделали)

...