4

Android 2D グラフィックスを使用して回転した円弧を描画しています

c.drawArc(new RectF(50, 50, 250, 250), 30, 270, true, paint);

ゲームの実行中にアークが回転します。

他のゲーム オブジェクト (長方形、円) が衝突しているかどうかを検出する方法を知りたいですか??

ゲームを書くのはこれが初めてです:)

http://hakim.se/experiments/html5/core/01/でこのようなものを見ました

前もって感謝します

4

1 に答える 1

7

円弧の衝突は通常の衝突よりも少し難しくなりますが、ブール代数を使用すると、特定の点が円弧の内側にあるかどうかを簡単に確認できます。

次の写真を見てください。

ここには 3 つのオブジェクトがあります。黒い球、これはアークを視覚化します。何かが衝突すると、アークの内側にある可能性があります。黒い球体の上にある赤い球体は、弧の「内側」を視覚化します。何かが赤い球体の内側にある場合、それは間違いなく弧の「内側」ではありません。円弧の「カットオフ」を視覚化する緑色の三角形もあります。緑色の三角形の内側にあるものは、円弧に含まれていないことは間違いありません。

何かが黒い球の中にあるかどうかをテストするのは簡単です。(球の中心までのオブジェクトの距離 <= 球の半径)。赤球も同様。緑色の三角形は少しトリッキーです。最初にこれを作成する必要があります。円弧の開始ラジアンと終了ラジアンを見つけます。開始ラジアンで単位ベクトルを回転させます。次に、単位ベクトルを end ラジアンだけ回転します。これら両方のベクトルを 2 * 黒い球の半径だけ長くします。次に、円弧の中心点と、中心位置を三角形の 3 点として追加した 2 つのベクトルの位置を使用します。次に、点と三角形の衝突ソルバーの 1 つを使用できます: http://www.bing.com/search?q=point+triangle+collision&go=&form=QBLH&scope=web

したがって、覚えておいてください: アークとの衝突 = (黒い球体との衝突) && !(赤い球体との衝突) && !(緑の三角形との衝突)。

アーク衝突

于 2011-06-10T22:03:01.190 に答える