これが私の問題です。
私のゲームは、効率的なレンダリングと衝突のために領域に分割されています。各領域には、動的に移動する多くのオブジェクトがあります。彼らが移動したときに、彼らがどの地域にいるのかをすばやく判断する方法が必要です。
オブジェクトは、領域よりも長くまたは広くすることはできません。したがって、一度に 4 つ以上のリージョンに存在することはできません。
注意が必要なのは、オブジェクトの四角形が 2D の分離軸定理を使用した方向付けられた境界ボックスであるため、回転できることです。
これを行う主な方法は、各ポイントの領域を決定することです。
static public int colFromPos(float startX,float width, float x)
{
x -= startX;
return (int)Math.floor(x / width);
}
static public int rowFromPos(float startY,float height, float y)
{
y -= startY;
return (int)Math.floor(y / height);
}
これはかなり速いようです。
私はこのようにそれを行うためのいくつかの方法を考えました:
- OBB の境界四角形を生成し、この四角形の 4 つの領域を見つけます。ここでの欠点は、オブジェクトが本当に入っているかどうかを判断するために、さらにテストを行う必要があることです。
- OBB の各コーナーと各中間点の領域を決定します。
これを行うためのより良い、より速い方法はありますか? 私の解決策はどちらも良いアイデアですか?
ありがとう