私は2つの円の衝突検出を書いています。しかし、私が本当にしたいことを主目的にのみ示して下の画像のように、その表面の半分に他のオブジェクトと衝突することです:半分cricle面が異なる方向から他の円と衝突することになる html5キャンバスで半円の衝突を検出するにはどうすればいいですか?
。これをシミュレートする関数をどのように書くべきですか?私は2つの円の検出のために、現時点で判明している何は、このようなものです:
var dx = circle1.x - circle2.x;
var dy = circle1.y - circle2.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < circle1.radius + circle2.radius) {
// collision detected!
}
しかし、どのようにメイン円のおよそ半分だけが巻き込ま?衝突したサークルサーフェスのほんの一部はどうでしょうか?数学だけを言ってください。円/ 2度の円が衝突を検出しますか?
はい、あらゆる方向に移動します。フラットパーツの衝突は検出されません。 – newguy
それは難しいです - 私が知ることができるのは、2つのエッジポイント(現在のケースでは 'centerX、centerY + -radius'ですが、垂直でないラインではトリッキーになります)を決め、回転角度で形状。ランダムなX、Y点が半円内にあるかどうかを判断できます。 –
しかし、衝突は一般的に難しい作業です。単純な形状を超えて複雑さが増していくことを望むなら、関連するライブラリを探すことをお勧めします。たとえばPhaserJSは、優れた物理エンジンを備えています。 –