我有一个应用程序的布局,它需要检测图像何时与另一个图像发生碰撞。
在这里,用户通过点击他们想要的位置在屏幕上创建多个“球”,即名为“imgView”的 UIImageView 的同一实例:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *myTouch = [[event allTouches] anyObject];
imgView = [[UIImageView alloc] initWithFrame:CGRectMake(40, 40, 40, 40)];
imgView.image = [UIImage imageNamed:@"ball.png"];
[self.view addSubview:imgView];
imgView.center = [myTouch locationInView:self.view];
}
(imgView 在标头中声明为 UIImageView):
UIImageView *imgView;
现在,我还有一个名为“员工”的图像。它是一个在屏幕上水平平移的长条。我希望图像“工作人员”检测它与变量“imgView”或用户放置在屏幕上的球的每一次碰撞。因此,用户可以点击屏幕上的 10 个不同位置,并且“员工”应该能够捕捉到每一个位置。
我使用这个由 NSTimer 激活的 CGRectIntersectsRect 代码:
-(void)checkCollision {
if( CGRectIntersectsRect(staff.frame,imgView.frame)) {
[self playSound];
}
}
但是,仅在最后一个实例或用户创建的“球”中检测到交叉点。工作人员对此做出了反应,但对其余部分进行了平移。任何帮助修复我的代码以检测所有实例将不胜感激。