2010-09-06 142 views
1

可能重複:
Collision detection between two general hexahedrons碰撞檢測旋轉立方體

現在,我通過查找最小值和最大值,做邊框檢查做碰撞檢測。不幸的是,我的球員立方體與相機一起旋轉,當球員處於45度角時,這會造成一些令人討厭的結果。約束條件是每個立方體都是軸對齊的,並且有8個頂點,但是玩家可能會旋轉(基本上我對每個頂點做sin,cos,並圍繞立方體的中心旋轉。我的播放器旋轉?

感謝

+2

我是否錯過了一些東西或者你是否一遍又一遍地問同樣的問題? – Eiko 2010-09-06 13:20:34

+0

這可能不是完全重複的。 Milo正在使用非標準詞彙表:「立方體」表示六面體(即六面體圖形),「軸對齊」對我來說並不完全清楚,但可能意味着「相反的面是平行的」。他並沒有清楚地區分可用的多種規則性和直角性。這個問題可能會稍微受限於最近的一個問題,但他爲一般情況提供了兩種工作算法。無論如何,我再也不會受到困擾了。 – dmckee 2010-09-06 16:37:19

+0

遊戲開發語言中的「軸對齊」意味着面都與三個主軸平面平行,即在X = 0,Y = 0和Z = 0的平面上。在我上學的地方,「立方體」被定義爲一個六面體,所有邊緣和所有邊緣之間具有相同長度的直角。 – 2010-09-07 21:48:49

回答

-1

如果其中一個立方體沒有旋轉,那麼它很容易檢查單個點是否在立方體內(帶有邊界檢查)。因此,取出旋轉的立方體的每個8節點並檢查它是否落入未旋轉的立方體內。

+2

是否有可能兩個立方體可以相互交叉,但是沒有任何頂點到另一個的內部? – andand 2010-09-06 15:39:07

+0

我們已經在這個問題的前兩個化身中的每一箇中都已經過了這個算法。這是行不通的。 – dmckee 2010-09-06 16:33:56

+0

我同意這個限制。嗯... – ja72 2010-09-07 20:09:07

1

查找每對平面的交線,然後確定該交線是至少在兩個多邊形的部分。

或者,更簡單解決方案,假裝玩家是球體。

+0

好吧我該如何做球體AABB立方體碰撞檢測? – jmasterx 2010-09-06 13:04:57

+0

有時圓柱體可能比球體更好。例如,這是如何在Quake I中完成碰撞檢測的。 – doc 2010-09-06 13:06:09

+0

哪一個最簡單實施 – jmasterx 2010-09-06 13:07:25