画面上部から落ちるグリーンボール、イエローボール、オレンジボール、レッドボールの4つの要素があります
私はまた、私のタッチに従う要素、ブルーボールを持っています.
これらすべてがうまく機能しています!:D
ただし、緑のボールが青のボールと交差するタイミングを検出したい
私の青いボールはviewDidLoadでビューに配置され、4つのボールはonTimerを呼び出すnstimerに基づいてビューに配置されます。
5 つのボールはすべて同じレイヤーに作成されます。
[self.view insertSubview:greenImage belowSubview:bottomBar]
赤玉と緑玉がいつ衝突するかを検出できます。
if (CGRectIntersectsRect(greenImage.frame, redImage.frame)) {
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"title" message:@"points" delegate:nil cancelButtonTitle:@"cool" otherButtonTitles:nil];
[message show];
[message release];
}
「redImage」を「blueball」に置き換えると、アラートが表示されません。これは、同じメソッドで宣言されていないことが原因である可能性があると思います。
この衝突を検出する方法についてのアイデアはありますか?
ありがとう!
- - 編集 - -
以下の提案を使用して、次のことを行っています。
greenImage = [[UIImageView alloc] initWithImage:green];
greenImage.frame = CGRectMake(startX,0,43,43);
[self.view insertSubview:greenImage belowSubview:bottomBar];
[UIView beginAnimations:nil context:greenImage];
[UIView setAnimationDuration:5 * speed];
greenImage.frame = CGRectMake(startX, 500.0, 43,43);
CGFloat r1 = greenImage.frame.size.width * .5;
CGFloat r2 = blueBall.frame.size.width * .5;
if(CGPointDistance(greenImage.center, blueBall.center) < (r1 + r2)){
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"notice" message:@"hit!" delegate:nil cancelButtonTitle:@"cool" otherButtonTitles:nil];
[message show];
[message release];
}
私が持っているこのメソッドの下に:
CGFloat CGPointDistance(CGPoint p1, CGPoint p2)
{
return sqrtf((p1.x-p2.x)*(p1.x-p2.x) + (p1.y-p2.y)*(p1.y-p2.y));
}
エラーが発生します:
「CGPointDistance」の競合するタイプ
そして警告:
関数 'CGPointDistance' の暗黙の宣言