XNA をますます使用するようになったので、1 つのことが本当に気になりました。X と Y は int のみであり、文字の位置に Vector を使用したいが、長方形の交差方法が必要な場合は最悪です。
だから私の質問は、Rectangle 構造体で正確に何が起こるのですか?
私はおそらくこれをすべて考えすぎていますが、事前にご意見をお寄せいただきありがとうございます。
XNA に2D Axis-Aligned Bounding Box構造 ( とは異なり、浮動小数点を使用するRectangle
) がないことは、少し面倒です。BoundingBox
Z 軸を無視するだけで再利用できる3D の があります。
個人的には、独自のAABB
構造を作成して使用しています。というか、一度書いて、プロジェクト間でコピーされるだけです。書きにくい構造ではありません。
あなたが具体的にどのように機能するかを尋ねた場合を除いて、ここに投稿しますRectangle
(私自身の構造はまったく異なって動作します)。だから、これは私が一緒に投げたもので、似ているはずですRectangle
:
public struct AABB
{
public float X, Y, Width, Height;
public static AABB Intersect(AABB a, AABB b)
{
AABB result;
result.X = Math.Max(a.X, b.X);
result.Y = Math.Max(a.Y, b.Y);
result.Width = Math.Min(a.X + a.Width, b.X + b.Width) - result.X;
result.Height = Math.Min(a.Y + a.Height, b.Y + b.Height) - result.Y;
if(result.Width < 0 || result.Height < 0)
return default(AABB);
else
return result;
}
}
まとめたばかりなので、十分にテストされていません。Rectangle
また、負の幅/高さが指定された場合と同じように応答するかどうかはわかりません。しかし、ご覧のとおり、コードはそれほど多くないので、かなり簡単に変更できるはずです。