2013-12-09 42 views
1

我想弄清楚爲什麼我的大盒子不包含較小的盒子。XNA BoundingBox不相交

我有以下幾點:

BoundingBox b = new BoundingBox(new Vector3(soldier.Position.X - 0.3f, soldier.Position.Y, soldier.Position.Z + 0.2f), new Vector3(soldier.Position.X + 0.3f, soldier.Position.Y + 1.8f, soldier.Position.Z - 0.2f)); 
BoundingBox b2 = new BoundingBox(new Vector3(soldier.Position.X - 0.015f, soldier.Position.Y + 0.01f, soldier.Position.Z + 0.07f), new Vector3(soldier.Position.X + 0.015f, soldier.Position.Y + 0.015f, soldier.Position.Z - 0.055f)); 
Console.WriteLine(b.Contains(b2)); 
Console.WriteLine(soldier.Position); 

BoundingBoxRenderer.Render(b, GraphicsDevice, cam.View, cam.Projection, Color.Red); 
BoundingBoxRenderer.Render(b2, GraphicsDevice, cam.View, cam.Projection, Color.White); 

而且它打印 「脫節」。然而,較小的盒子(b2)肯定在較大的盒子(b)內。有沒有打印脫節的原因?

enter image description here 它在紅框(b)內畫出白框(b2)就好了。 然而,它打印:

Disjoint {X:22.5 Y:0 Z:-21.5}

是不是有什麼毛病我包圍盒?

回答

0

我的邊界框有什麼問題嗎?

是。你的盒子裏面沒有了。 對於所有的邊界框; min.x必須是max.x的較低值。 min.y必須是最大值的最小值。 min.z必須是一個較低的值,即max.z.

但是,對於您的兩個盒子,min.z都是比max.z更大的值。由於這與所需要的相反,這會導致你的盒子失效。

它爲什麼似乎呈現正確?

也許你的渲染代碼有否定Z組件的問題。