2011-09-17 79 views
0

是否可以確定b2body是否與來自不同層的另一個b2body相撞?另外,我將如何做到這一點?確定身體是否發生了碰撞 - Cocos2d/Box2D

E.G.

我在我的主要遊戲場景圖層上有一個球,在我的一層炸彈中被擊中。他們相撞,炸彈消失。

請讓我知道,如果我需要更清楚

謝謝!

回答

1

如果你想要身體碰撞,他們必須屬於同一個b2World。他們畫的是什麼層,對物理學無關緊要。要確定當發生碰撞的子類b2ContactListener並實現回調函數:

class MyContactListener : public b2ContactListener 
{ 
public: 
MyContactListener() : b2ContactListener() {} 

void BeginContact (b2Contact *contact); 
void EndContact (b2Contact *contact); 
void PreSolve (b2Contact *contact, const b2Manifold *oldManifold); 
void PostSolve (b2Contact *contact, const b2ContactImpulse *impulse); 

}; 

那麼這個類的對象添加到您的b2World:

MyContactListener *listener = new MyContactListener(); 
world->SetContactListener(listener); 
+0

我有碰撞檢測設置。我應該全球宣佈b2World嗎?球是在遊戲場景層上繪製的,這是它自己的類,而炸彈是在第一層上繪製的,這是它自己的類。 – Jonathan

+0

@Jon:我認爲你擁有包含所有其他圖層的主要場景或圖層。您可以存儲b2World指針並將指針傳遞給您創建的每個子圖層 – Andrew

+0

如何創建子圖層? – Jonathan