2013-07-18 1 views
0

Im en utilisant ce code pour essayer de détecter les collisions entre deux images, dont l'une est dans une animation, mais cela ne fonctionne pas.Détecter les collisions avec UIAnimation

[UIView animateWithDuration:5 animations:^{ 
     bird.center = CGPointMake(bird.center.x, 600); 
     fallTimer = [NSTimer scheduledTimerWithTimeInterval:.001 target:self selector:@selector(check) userInfo:nil repeats:YES]; 
    }]; 

-(void)check { 
    if (CGRectIntersectsRect(bird.frame, cat.frame)) { 
     NSLog(@"YES"); 
    } 
} 

Comment puis-je détecter la collision?

+0

Votre intervalle de temps est ridiculement petit (0,001 seconde). Il semble que la position de l'oiseau soit statique dans ce code. Est-ce que le chat bouge et pourriez-vous faire votre chèque dans l'animation du chat? –

+0

L'oiseau est celui qui est animé tandis que le chat est statique. –

Répondre

0

Vous ne pouvez pas utiliser le cadre d'une vue pendant son animation, la valeur renvoyée ne sera pas précise. Au lieu de cela, vous devriez être en mesure d'obtenir le presentationLayer à partir des vues layer et vérifier son cadre.

+0

Comment ferais-je cela? –

+0

Au lieu de 'bird.frame', essayez' bird.layer.presentationLayer.frame'. – Wain

+0

Essayé, il y a eu une erreur de: La propriété 'frame' n'a pas été trouvée sur l'objet de type 'id'. D'autres idées? –

Questions connexes