我有一个类似“雨”的动画,从屏幕顶部移动到底部(几个图像从顶部不断下降)。我还有一个由底部手指控制的篮子图像。我希望应用程序计算任何掉落的图像和篮子之间的“碰撞”数量,如果它们发生碰撞,则删除图像。
我使用了两个计时器:一个用于不断地从顶部放下图像。我将这些图像中的每一个都放在一个数组中。然后我有另一个计时器,每 0.001 次检查一次碰撞。
每次两个物体碰撞时,我都能得到计数,但问题是,计数太多了!例如,每次视觉碰撞都会计算 985 次碰撞。我在我的代码中做错了什么?:计时器:
[NSTimer scheduledTimerWithTimeInterval:(0.001) target:self selector:@selector(onCollisionCheckTimer) userInfo:nil repeats:YES];
碰撞检查器:
- (void)onCollisionCheckTimer{
for (x = 0; x<100; x++){
CALayer *layer = appleView[x].layer.presentationLayer;
if(CGRectIntersectsRect(basketView.frame, layer.frame)) {
collision++;
printf("%i\n", collision);
[appleView[x] removeFromSuperview];
}
}
}
printf("%i", collision);
每次碰撞都会输出数百个数字