Это потому, что каждый раз, когда кадры начинают пересекаться,
if(CGRectIntersectsRect(imageView.frame,centre.frame))
ваше состояние будет истинным, пока кадры не разделятся и число не увеличится более чем в 100 в CADisplayLink
, чтобы вы могли использовать BOOL и установить его в значение true, когда кадры впервые пересекаются. затем проверьте, не разделены ли они, и верните BOOL обратно в false.
инициализировать BOOL intersectFlag
в false в init. Я предполагаю, что кадры изначально не пересекаются.
-(void)detectCollision
{
imageView.center = CGPointMake(imageView.center.x + X, imageView.center.y + Y);
if(!intersectFlag)
{
if(CGRectIntersectsRect(imageView.frame,centre.frame))
{
intersectFlag = YES;
label.text= [NSString stringWithFormat:@"%d", count];
++count;
}
}
else
{
if(!CGRectIntersectsRect(imageView.frame,centre.frame))
{
intersectFlag = NO;
}
}
}