2013-04-09 184 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