2014-09-02 2 views
0

Ive огляделся и не смог найти простой способ. У меня есть анимация, которая играет, когда происходит столкновение, хотя анимация не может пройти мимо первого кадра, пока объекты не будут полностью разделены, поскольку обнаружение столкновения продолжает стрелять.Как временно остановить проверку на столкновение

Кто-нибудь знает, как заставить анимацию играть до конца или обнаружить обнаружение столкновения один раз? (хотя повторное обнаружение столкновения должно повториться снова, чтобы повторить процесс).

if (CGRectIntersectsRect(Heli.frame, AstroidBig.frame)) { 
     animation2.animationImages = [NSArray arrayWithObjects: 
            [UIImage imageNamed:@"Image 1"], 
            [UIImage imageNamed:@"Image 2"], 
            [UIImage imageNamed:@"Image 3"], 
            nil]; 
     [animation2 setAnimationRepeatCount:1]; 
     animation2.animationDuration = 0.4; 
     [animation2 startAnimating]; 
     [self performSelector:@selector(enemyreset) withObject:nil afterDelay:1]; 
} 

Функция «enemyreset» - это функция, которая возвращает объект обратно в игру из точки столкновения.

ответ

0

Установите флаг в указанном выше методе, чтобы указать, что вы анимируете (вам нужно добавить его как свойство). Только запустите анимацию, если вы еще не анимации. Затем сбросьте флаг в методе enemyreset.

if (CGRectIntersectsRect(Heli.frame, AstroidBig.frame)) { 
    if (!self.alreadyAnimating) { 
     animation2.animationImages = [NSArray arrayWithObjects: 
            [UIImage imageNamed:@"Image 1"], 
            [UIImage imageNamed:@"Image 2"], 
            [UIImage imageNamed:@"Image 3"], 
            nil]; 
     [animation2 setAnimationRepeatCount:1]; 
     animation2.animationDuration = 0.4; 
     [animation2 startAnimating]; 
     [self performSelector:@selector(enemyreset) withObject:nil afterDelay:1]; 
     self.alreadyAnimating = YES; 
    } 
} 
+0

Можете ли вы объяснить немного больше @pbasdf? В итоге я не смог заставить его работать. Было бы из-за моего ограниченного понимания кода. – user3230481

+0

Несомненно, если вы можете добавить немного более подробную информацию о своей проблеме. В частности, какой метод является приведенным выше кодом? Как обновлены файлы Heli.frame и AsteroidBig.frame? – pbasdf

Смежные вопросы