0

ゲーム マップに 2 つの Rectangle (A と B と呼びます) があり、B の中心から A までの角度を計算しました。問題は、私のゲームでは、これらのゲーム要素のうちの 2 つがオーバーラップしてはならない (通常は衝突コードがある) ため、「シューティング」コードが停止することです。C を上にスポーンすることは論理的に機能しません。

私の解決策 (より良い方法があるかどうか教えてください) は、親の端の隣に3 番目の四角形を生成することですが、UI が適切に機能するには、四角形 A に面する親の端から常に生成する必要があります。

長方形 B の中心座標、B から A までの角度 (ラジアンまたは度) を知っています。角度がどの辺 (左、上、右、下) を指すかをどのように判断できますか?

4

3 に答える 3

0

それが の中心angleから の中心までの角度であり、間隔 -pi..pi でラジアンで指定されていると仮定すると、次のように実行する必要があります (@Jared が提案したように、正の角度は上ではなく下であることに注意してください)。BA

double halfPi = Math.PI/2;
double theta = Math.atan2(B.height, B.width);
if (angle >= theta+halfPi || angle <= -theta-halfPi) {
    // left side
} else if (angle >= theta) {
    // bottom side
} else if (angle >= -theta) {
    // right side
} else {
    // top side
}
于 2013-05-27T21:17:44.843 に答える