Cocos2D 2.x - Multi-Touch отстает, но не падает FPS
В моей новой игре мне приходится работать с мультитач с помощью cocos2d, чтобы перемещать двух игроков одновременно. Однако иногда кажется, что прикосновения затягиваются! Когда я играю, все действительно гладко, но тогда я получаю отставание из ниоткуда с движением игроков, но другие объекты движутся плавно! Поэтому я решил запустить профилирование, и все было хорошо, моя игра всегда работала со скоростью 56-60 кадров в секунду, даже с задержкой. Так что я думаю, что это не проблема памяти и не FPS, а проблема сенсорной обработки... Вот мой код:
- (void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
for (UITouch *touch in touches) {
tapCount ++;
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
//Do my stuff here...
NSLog(@"Tap Count:%d", tapCount);
}
}
- (void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
if (tapCount == 0) return;
for (UITouch *touch in touches) {
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
CGPoint prevLocation = [[CCDirector sharedDirector] convertToGL:[touch previousLocationInView:[touch view]]];
float diff = (location.y - prevLocation.y) / ipadScale * SENSIVITY;
//MOVE MY PLAYERS HERE
}
}
- (void) ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{
[self ccTouchesEnded:touches withEvent:event];
}
- (void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
for (UITouch *touch in touches) {
tapCount--;
NSLog(@"Tap Count:%d", tapCount);
}
if (tapCount <= 0) {
tapCount = 0;
[self pauseGame];
}
}
Я также регистрирую свою игровую сцену как Стандартный Делегат, это проблема? Я думаю, не потому, что это требуется для мультитач! Я верю, что в этом коде нет ничего плохого, я прав? И когда я говорю "запаздывающе", это похоже на работу с частотой 25 кадров в секунду, это не имеет большого значения, но немного раздражает!
Пожалуйста, помогите мне! Спасибо!