2014-04-21 78 views
0

一個小矩形向較大的矩形發生隆起。我想知道它是否碰到「側面」或「頂部」的大矩形。Box2D:如何檢測多邊形的哪一側發生碰撞

我也想檢測一下小多邊形是放在它自己的側面,頂部還是底部。我將想象這將需要使用身體上的GetAngle()來檢測它是如何定向的,但我想聽聽是否有更好的方法。

謝謝

+0

http://stackoverflow.com/questions/23005161/detect-whether-a-specific-part-of-body-collided-with-another-body-in-box2d看看這個鏈接。 –

回答

2

你可以創建你的「對象相撞」作爲多個燈具。對主夾具使用多邊形或方形。然後在外圍附加幾個零質量夾具作爲「傳感器」,並使用所有這些標籤中的用戶標籤來確定哪一個在碰撞中受到撞擊。

此圖像顯示的基本思路:

enter image description here

通過做這種方式,Box2D的將處理處理你,當你的影響還是得到了第一衝擊在什麼角度的全部工作。

這種技術是而不是只適用於有四面的盒子。您可以將它用於任何需要碰撞的物體,這些物體會根據碰撞的位置執行「不同的事情」。

注意:您可能需要打開連續碰撞檢測和/或將您的小盒子設置爲「子彈」,以使其無法穿過您的某個傳感器。或者使傳感器變得非常大(更多擴展到主要目標的形狀)。或者你可以使模擬步驟更小(固定時間較短),以便在模擬步驟中行進的距離遠遠小於邊緣觸點夾具的寬度。其中任何一個想法的目標都是爲了避免「隧道效應」。

如果您不使用傳感器方法,您可以嘗試使用幾何體,速度矢量和旋轉角度(就在撞擊之前)爲每個涉及的兩個物體做這個,但這聽起來很親切痛苦的。

對您有幫助嗎?

+0

是的,它是有幫助的,雖然我希望這不會是答案。我的遊戲同時在屏幕上有很多大小不同的裝置,我希望我不會再增加5人以上的人口。 – Brimby

+0

應該很容易處理面向對象的方法。 –