2011-08-01 83 views
0

我有一個彈丸和一個塔。當我投擲射彈時,它撞擊塔。基於拋射力,塔架破裂。現在我需要知道如何在碰撞時獲得應用於這兩個物體的力(不是在碰撞之前,而是在碰撞之後)。我知道下面的方法就可以計算如下碰撞後施加在box2d物體上的力

void MyContactListener::PostSolve(b2Contact* contact, const b2ContactImpulse *impulse) 
{ 
    force=impulse->normalImpulses[0]; 
} 

這給了我施加的總力,但我想知道適用於2個不同的對象的個人力量。

還有一個問題,這個方法駐留在b2ContactListener類的子類中。如何將此值傳遞給GameScene,其中對象將被銷燬。

回答

1
  1. 同樣的衝動適用於兩個身體(當然在相反的方向)。

  2. 您將需要一個對PostSolve回調和其他需要使用它的地方都可見的變量 - 可以使用全局變量或類變量。

+0

如果我有多個對象碰撞,那麼如何從這個變量中識別不同的衝動? – russell

+0

您需要檢查哪些燈具正在碰撞 - 您可以通過contact-> GetFixtureA()和contact-> GetFixtureB()從聯繫人中獲取它們。如果有幫助,您可以將用戶數據中的某些內容設置爲標記以區分它們。在本教程中查看BeginContact的實現,它有點類似:http://www.iforce2d.net/b2dtut/collision-callbacks – iforce2d

+0

感謝您的鏈接。但是,如果對象A與對象B和對象C同時碰撞,那麼我將得到2的衝動。因此對象A將有2衝動,所以對象A的用戶數據標籤將不足以滿足要求。任何其他想法? – russell