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; 
    }

然后我创建了两个相同的模型,具有相同的高度、大小和比例:比例:新 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% 完全对齐时,窗口标题才会改变以显示碰撞,但我想要做到的是即使它们在任何时候都接触,而不仅仅是在它们匹配时。关于如何实现这一目标的任何想法?

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

4

1 回答 1

0

根据您拥有的代码,最小值和最大值将相同。这可以解释为什么它们只有在完全对齐时才会相交。你以后要修改边界吗?

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

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

于 2013-04-10T02:38:10.620 回答