画像が別の画像と衝突したときに検出する必要があるアプリケーションのレイアウトがあります。
ここで、ユーザーは、目的の場所をタップして、画面上に「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;
今、私は「スタッフ」と呼ばれる画像も持っています。これは、画面上で水平方向にパンする長いバーです。画像「staff」が変数「imgView」またはユーザーが画面に配置したボールとのすべての衝突を検出するようにします。したがって、ユーザーは画面上の10の異なる場所をタップすることができ、「スタッフ」はすべての場所をキャッチできるはずです。
NSTimerによってアクティブ化される次のCGRectIntersectsRectコードを使用します。
-(void)checkCollision {
if( CGRectIntersectsRect(staff.frame,imgView.frame)) {
[self playSound];
}
}
ただし、交差は、ユーザーが作成したLASTインスタンスまたは「ボール」でのみ検出されます。スタッフはそれに反応しますが、残りの部分をパンします。すべてのインスタンスを検出するようにコードを修正するための助けをいただければ幸いです。