Java で 2D プラットフォーマーを作成していますが、問題が発生しました。2 つのオブジェクトがあります。どちらにもバウンディング ボックスがあり、ボックスの角を表す 4 つの座標があります。
私の問題は、衝突をシミュレートする方法を見つけようとしていることですが、それができないようです。あらゆる場所を検索してみましたが、ほとんどのサイトは OpenGL 戦術を示しているだけです。
バウンディング ボックスの座標を次のように表します。
TL: 左上
TR: 右上
BL: 左下
BR: 右下
これが私が最初に衝突のテストを提案した方法です:
if(TL1 > TL2 && TL1 < TR2) //X-axis
//Collision happened, TL1 corner is inside of second object
else if(BL1 < TL2 && BL1 > BL2) //Y-axis
//Collision happened, BL1 corner is inside of second object
これは非常に大雑把な表示方法ですが、基本的にはコーナーが他のオブジェクトと交差しているかどうかを確認しています。問題は、両方の axii を考慮していないことです。つまり、一方のオブジェクトが他方の上にある場合でも x 衝突が発生します。
両方の軸で衝突をチェックすると、それが水平衝突か垂直衝突かを判断する方法がありません。あるいはあるかもしれないが、私はそれを理解していない。
誰かが私を正しい方向に向けることができますか?