0

ねえ、私は今、私のアプリで大きな問題を抱えています。それはあまりにも不正確です.

気球の画像があります https://dl.dropbox.com/u/2578642/Balloonedit.png

そして、風船に衝突するとゲームが終了するダーツがあります。

現時点では、バルーンの画像に 8 つの UIImageView を設定しています。ダーツがそれらに当たったかどうかを検出しています。これは本当に正確になると思われていましたが、そうではありません。衝突するつもりのときに、ダーツは気球をほとんど通過します。そのため、計画があります。ダーツはUIImageViewではなくバルーンの実際の画像に当たりますか、またはバルーンの周りに境界線を描き、それが当たったかどうかを検出する方法はありますか?

現在、私はこのコードを使用して衝突を検出しています:

if (CGRectIntersectsRect(pinend.frame, balloonbit1.frame)){
    [maintimer invalidate];
    accelManeger.delegate = nil;
[ball setImage:img];
[UIImageView beginAnimations:nil context:NULL];
[UIImageView setAnimationDuration:0.3];
ball.transform = CGAffineTransformMakeScale(2, 2);
[UIImageView commitAnimations];

}

したがって、1 つのメソッドにはこれらのコードが 40 ビットあり、ご想像のとおり、応答はあまり正確ではなく、高速でもありません。だから私が言ったように、バルーンの周りに境界線や何かを描き、境界線とダーツの間の衝突を検出する方法はありますか? 5ビットのコードしか処理する必要がないため、非常にスムーズに実行されると思います。

助けてくれてありがとう。

これは大きな質問なので、答えていただければアプリを購入します :)

乾杯、ハリー:/

4

2 に答える 2

0

「...これらのコードの40ビット...」に到達すると、警報ベルが鳴り始めました。それを、繰り返し呼び出す 1 つのメソッドにリファクタリングしてみませんか?

アプリの性質がわからないので、これが適切かどうかわかりませんが、Chipmunk Physicsのような物理エンジンを使用することを提案できますか? 衝突の形状、移動するオブジェクトの重力、衝突時のコールバックのトリガーを定義できます。これは、現在行っていることよりも桁違いに高速になります。

于 2010-04-07T11:55:19.757 に答える
0

バルーンはほぼ完全な楕円です。このようなものを使用して衝突を確認できると思います

(x-cx)**2 / a**2 + (y-cy)**2 / b**2 <= 1.0

どこ..

  • x、y = ピンの位置
  • cx、cy = バルーンの中心
  • a = バルーンの幅 / 2
  • b = バルーンの高さ / 2

ただし、コードがスムーズに実行されない理由はまだわかりません。問題はここにはないかもしれません。

于 2010-04-07T12:19:02.770 に答える