2013-07-18 4 views
0

Я использую этот код, чтобы попытаться обнаружить столкновения между двумя изображениями, один из которых находится в анимации, но он не работает.Обнаружение столкновений с 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"); 
    } 
} 

Как я могу обнаружить столкновение?

+0

Ваш временной интервал смехотворно мал (0,001 секунд). Похоже, положение птицы статично в этом коде. Движется ли кошка и вы можете сделать свой чек в анимации кошки? –

+0

Птица является анимированной, а кошка статична. –

ответ

0

Вы не можете использовать рамку просмотра во время анимации, возвращаемое значение не будет точным. Вместо этого вы должны иметь возможность получить presentationLayer из представлений layer и проверить его фрейм.

+0

Как мне это сделать? –

+0

Вместо 'bird.frame', попробуйте' bird.layer.presentationLayer.frame'. – Wain

+0

Пробовал, получил ошибку: Property 'frame' не найден на объекте типа 'id'. Любые другие идеи? –