2010-11-15 161 views
2

我爲OpenGl做了一次碰撞檢測的快速搜索,但大多數情況下使用CGRectIntersectsRect回來了2D示例。我是否使用CGRectIntersectsRect進行3D檢測?我正在做一個基本的3D迷宮遊戲,我只是想阻止人們走過只是方形(由三角形)而不是導入對象的牆壁(是的,我是新手)。OpenGL 3D碰撞檢測

謝謝,西蒙

+0

更新:我實際上編寫了自己的簡單碰撞例程:) – Burf2000 2010-11-15 22:11:06

回答

5

你會很掙扎。

考慮只用Unity3D,這將允許您訪問nVidia的PhysX物理,這是你想要的3D物理解決方案的類型。

相反,從頭開始與此! http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.4.5881&rep=rep1&type=pdf

相反,在像這樣http://www.ode.org/然後你就可以想見使用OpenGL,http://www.ogre3d.org/about/features使用等

這裏成爲專家是有關的「圖像」的意見的重要澄清:

圖像與碰撞檢測完全無關。 OpenGL與任何形式的碰撞檢測或物理學都沒有任何關係。圖像與碰撞檢測完全沒有關係。 OpenGL和碰撞之間沒有連接,爲零。絕對沒有。

+0

感謝您的信息,由於費用原因,我不再使用Unity和SIO2 2.0,這對我來說是一個學習項目。我會檢查你的鏈接:) – Burf2000 2010-11-15 15:05:31

2

OpenGL是一個純粹的可視化庫,並且不提供任何碰撞檢測。你必須自己推出或使用第三方碰撞檢測庫。

函數CGRectIntersectsRect看起來像它來自Cocos庫,並執行矩形之間的2D碰撞檢測。如果遊戲中的實際遊戲限於2D,則此功能可能是您所需要的全部功能,但如果玩家在三維中移動,則不足以實現此功能。

+0

玩家只能前進/後退和旋轉等等,所以沒有Y訪問移動。那麼這個工作有很好的機會嗎? – Burf2000 2010-11-15 15:07:13

+0

如果只旋轉90度角,則可以使用具有X和Z座標的矩形的'CGRectIntersectsRect'。否則,忘記它。 – Zecc 2010-11-15 15:54:03

+0

如果我理解正確,則需要繪製單獨的圖像來進行碰撞檢測:只使用3D顯示窗口將無法工作。在任何情況下,嘗試使用OpenGL進行碰撞檢測都是一種破解 - 這不是它的設計目的,所以它最多隻會是尷尬和脆弱的。 – comingstorm 2010-11-15 18:30:05

0
  1. OpenGL不會做碰撞檢測,至少不是故意的。您可以使用某些功能來執行精靈碰撞檢測,但我不確定這是否適用於iPhone上的最新OpenGL ES。

  2. CGRectIntersectsRect來自Core Graphics,它是一個簡單的信封檢查,可以避免在明顯不需要時進行更精確和更昂貴的檢查。它只適用於2D。

  3. 3D中的碰撞很棘手。也許你可以先將頭像投影到地板上,然後檢查生成的多邊形(甚至矩形)是否與牆線發生碰撞?聽起來更容易。