1

基本的に、XNA で 3D モデルの周りにバウンディング ボックス/立方体を配置したいと考えています (この場合は単純な描画であるため、モデル自体は単なるテクスチャ付きの四角形です)。

キューブを作成するために次のコードを試しました。

    public BoundingBox BoundingBoxCreation()
    {
        min = Position + Vector3.Up * Height - Size / 2
        max = Position + Vector3.Up * Height - Size / 2;

        boundingBox = new BoundingBox(min, max);
        return boundingBox; 
    }

次に、同じ高さ、サイズ、縮尺で同じモデルを 2 つ作成します。 1.09f * 500、0.35f * 500) (すべてにスケールを掛けます)。次に、次のように2つの間の衝突をチェックしようとしました:

if (CollisionTest.boundingBox.Intersects(tapestryLeftOne.boundingBox))
   {
      Window.Title = "Collision";
   } 

ただし、ウィンドウ タイトルは、2 つが完全に 100% 完全に整列している場合にのみ衝突を表示するように変更されますが、私が目指していたのは、一致したときだけでなく、任意の時点で接触した場合でも、衝突を表示することです。どうすればこれを達成できるかについてのアイデアはありますか?

バウンディング ボックス/キューブを構築し、別のバウンディング キューブ、球体などの間の衝突を検出するより良い方法があれば、教えていただければ幸いです。

4

1 に答える 1

0

あなたが持っているコードに基づいて、最小値と最大値は同じになります。これは、完全に整列している場合にのみ交差する理由を説明します。後で境界を変更しますか?

あなたがしていることは正しいように見えますが、ボックスが同じサイズである場合は、Contains を試して 4 つのコーナー (Vector3) をチェックすることもできます

モデルの境界ボックスに関する詳細情報 http://www.toymaker.info/Games/XNA/html/xna_bounding_box.html

于 2013-04-10T02:38:10.620 に答える