边界框碰撞 - 3D XNA

时间:2013-04-09 23:41:06

标签: 3d xna collision

基本上我想在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; 
    }

然后我创建两个相同的模型,具有相同的高度,大小和比例: 比例:新的Vector3(500.0f)(大规模,因为我在Blender中创建它们) 身高:2f 尺寸:新Vector3(6.75f * 500,-1.09f * 500,0.35f * 500)(按比例乘以一切)。然后我试着像这样检查两者之间的碰撞:

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

然而,当两者完全100%完美对齐时,窗口标题只会改变以显示碰撞,但我想要的是试图使其成为可能,即使它们在任何时候触摸,而不仅仅是在它们匹配时。 有关如何实现这一目标的任何想法?

如果有更好的方法来构建一个边界框/立方体并检测另一个边界立方体,球体等之间的碰撞,那么如果你能告诉我,我将非常感激。

1 个答案:

答案 0 :(得分:0)

根据您的代码,min和max将是相同的。这可以解释为什么它们只有完全对齐时才会相交。你是否稍后修改了界限?

你在做什么看起来是正确的,但你也可以尝试包含并检查4个角(Vector3)如果框大小相同

有关模型边界框的更多信息 http://www.toymaker.info/Games/XNA/html/xna_bounding_box.html