1

私は現在Androidゲームを作成していて、しばらく前に衝突検出を実装しています。スプライトの位置、幅、高さを使用してスプライトの周りに長方形を描画し、それらが他の長方形と交差するかどうかを確認しています。ただし、スプライトは軌道に応じて回転するようになりましたが、Rectを回転させる方法が見つからないため、境界が正しくなります。助言がありますか?

ありがとうアンディ

4

1 に答える 1

1

Rect通常、オブジェクトは軸に沿って配置されるため、必要な値は上、左、下、右の 4 つだけです。

長方形を回転させたい場合は、各頂点の座標を表す 8 つの値に変換する必要があります。

すべての x 値と y 値を平均することで、中心値を簡単に計算できます。

あとは基本的な数学です。これは StackOverflow からのものです。

別の点を中心に点を回転させる (2D)

あなたの 8 つの値、または 4 つの角は次のとおりです (右上から反時計回りと仮定):

v0 : (right, top)
v1 : (left, top)
v2 : (left, bottom)
v3 : (right, bottom)

これに対処するために独自の長方形オブジェクトを作成し、交差点などを計算します。

長方形の頂点を回転する方法について話したことに注意してください。それでもバウンディング ボックスが必要な場合、これは通常、軸に沿って配置されていると見なされるため、回転した頂点の最大値と最小値を取得して、新しい (より大きな) 四角形を作成できます。それはあなたが望むものではないかもしれません。

于 2013-01-22T22:06:48.947 に答える