我在一個互相碰撞的世界中有幾個球。世界各地都有靜止的牆壁。檢測「卡住」的身體
有時候,他們最終在他們繼續向上/向下移動或左/沿着相同的路徑正確的位置(運動垂直於牆面?)
有沒有簡單的方法來檢測這一點,然後,在任一方向上施加一點旋轉?
任何語言的box2d僞代碼或代碼將不勝感激。
編輯:圖片,如提出要求@Andrew
如果球繼續移動這樣的(左/右/左/右...),我想給它輕輕一推所以它從當前路徑移動。
我在一個互相碰撞的世界中有幾個球。世界各地都有靜止的牆壁。檢測「卡住」的身體
有時候,他們最終在他們繼續向上/向下移動或左/沿着相同的路徑正確的位置(運動垂直於牆面?)
有沒有簡單的方法來檢測這一點,然後,在任一方向上施加一點旋轉?
任何語言的box2d僞代碼或代碼將不勝感激。
編輯:圖片,如提出要求@Andrew
如果球繼續移動這樣的(左/右/左/右...),我想給它輕輕一推所以它從當前路徑移動。
我認爲你可以創建b2ContactListener
子類來檢測ball-wall
碰撞(這很簡單,並在Box2D manual
解釋)。在你爲每個球存儲3個速度值之後。
ball-wall
碰撞。ball-wall
後發生碰撞。ball-wall
碰撞。當你獲得這三個速度(使用b2Body
GetLinearVelocity
功能) - 檢查,如果他們趴在一些精密的同一行(除了有標誌相同方向)。如果滿足這個條件 - 應用一點旋轉
感謝您的答案安德魯。答案看起來不錯,它應該工作(我現在無法測試)。我會接受你的回答並獎勵賞金。再次感謝! – Dogbert 2012-07-30 12:31:11
我以爲你可以測量每次碰撞的角度?我現在沒有時間發佈正確的代碼(今晚也許,如果你需要一個例子),但你可以有某種機制來檢查球和牆壁之間的碰撞角度。
如果它正好是90度,則可以將球(用戶數據或某個外部陣列)標記出來,然後開始跟蹤牆與該球之間連續90度碰撞的次數。如果兩個90度的碰撞一個接一個地發生,那麼可以安全地假定球被卡住並輕輕推動。
你可以發佈一個圖像與這種情況嗎? – Andrew 2012-07-29 06:52:03
@Andrew添加了一張圖片。我希望它使事情更清楚。 – Dogbert 2012-07-29 07:06:39
球會碰撞嗎? – Raiden 2012-07-29 07:08:59