Android 2Dアーク衝突検出
-
26-10-2019 - |
質問
Android 2Dグラフィックスを使用して描かれた回転アークがあります
c.drawArc(new RectF(50, 50, 250, 250), 30, 270, true, paint);
アークはします 回転します ゲームが実行されている間、
他のゲームオブジェクト(長方形、円)が衝突するかどうかをどのように検出できるか知りたい ??
私がゲームを書くのは初めてです:)
私はこのようなものを見ました http://hakim.se/experiments/html5/core/01/
前もって感謝します
解決
アークの衝突は通常の衝突よりもわずかに難しくなりますが、ブール代数を使用すると、特定のポイントがアーク内にあるかどうかを簡単に確認できます。
次の写真を見てください。
ここには3つのオブジェクトがあります。黒い球体、これはあなたのアークを視覚化します、何かがそれに衝突すると、それはあなたのアークの内側にあるかもしれません。黒い球の上にある赤い球体、これはアークの「内側」を視覚化します。何かが赤い球の内側にある場合、それは間違いなく「内側」ではありません。これで、アークの「カットオフ」を視覚化するグリーントライアングルもあります。グリーントライアングル内のすべては、間違いなくアーク内にありません。
何かが黒い球体の中にあるかどうかをテストするのが簡単です。 (球体の中心までのオブジェクトの距離<=球体の半径)。赤い球体についても同じです。緑の三角形は少し難しいです。最初にこれを構築する必要があります。アークの開始ラジアンを見つけてください。スタートラジアンでユニットベクトルを回転させます。次に、エンドラジアンでユニットベクトルを回転させます。これらの両方のベクトルを2 *黒球の半径を長くします。次に、アークの中心点と、三角形の3ポイントとして中心位置を追加した2つのベクトルの位置を使用します。その後、ポイントトライアングル衝突ソルバーの1つを使用できます。 http://www.bing.com/search?q=point+ triangle+collision&go =&form = qblh&scope=web
覚えておいてください:arc =(黒球との衝突)&&!(赤い球との衝突)&&!(緑の三角形との衝突)。