2013-04-09 146 views
1

基本上我想在XNA的3D模型周围放置一个边界框/立方体(在这种情况下,它是一个简单的绘画,因此模型本身只是一个带纹理的矩形)。边界框碰撞-3D XNA

我尝试下面的代码来创建多维数据集:

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 大小:new Vector3(6.75f * 500,-1.09f * 500,0.35f * 500)(将所有数据乘以比例)。然后我试图检查两个像这样的碰撞:

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

但是窗口标题只会改为显示当两个是绝对100%完全一致的碰撞,但我要去的尝试即使他们在任何时候接触,而不仅仅是当他们相匹配时都能做到这一点。 关于如何实现这一点的任何想法?

如果有更好的方法来构造一个边界框/立方体并检测另一个边界立方体,球体等之间的碰撞,那么我会非常感谢你能否给我看。

回答

0

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

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

包围盒的型号有 http://www.toymaker.info/Games/XNA/html/xna_bounding_box.html

+0

在一些更多信息,谢谢你回到我这个问题上。我会明天尝试这个第一件事,并让你知道这是否解决了我的问题。 – Mike 2013-04-14 22:24:51

+0

我设法让我的最小和最大边界框工作。只需将+更改为a-on分钟,因为我正在创建一个大小为零的框,解释了为什么它必须完全对齐才能检测到碰撞。 但是我现在有另一个问题。由于某些原因,当我画出围绕模型的框时,它看起来远离模型本身。你知道解决这个问题的方法吗? (如果需要可以提供截图) – Mike 2013-04-28 20:33:28