2011-10-18 290 views
1

我增加了b2BodyDef我CCScene像這樣:Box2D碰撞檢測?

b2BodyDef platformBodyDef; 
    platformBodyDef.type = b2_dynamicBody; 
    platformBodyDef.position.Set(40, 495); 
    platformBodyDef.userData = platforms; 
    _body = _world->CreateBody(&platformBodyDef); 

我知道我應該使用接觸聽衆,但我是新來的Box2D這就好比另一種語言給我,我這樣怎麼會是代碼,看看我的CCScene中的一個CCSprites是否與這個b2BodyDef相沖突?這個b2BodyDef會動畫,但我現在不擔心這個。 有誰知道我該怎麼做?

謝謝!

回答

1

有一個很好的教程描述如何做到這一點here

基本上你要做的就是創建一個偵聽機構之間衝突的contactListener。確保您的精靈被標記,然後在聯繫人偵聽器中加載碰撞的兩個對象的精靈數據。通過檢查標籤,您可以識別出碰撞的精靈。

從那裏你可以做任何事情,因爲你有一個引用的精靈,身體和世界。例如,如上述示例中那樣,移除磚塊。

+0

由於我做了這個線程,我成功地將它添加到我的項目。但是我目前面臨的問題是如何在一次碰撞中停止多次回調。你知道這是可能的嗎? –

+0

對不起,延遲迴復 - 希望它可以幫助別人......在contactListener的預分析方法中,您可以取消事件。所以你用標籤去標記身體,然後取消事件。然後,當你遍歷所有的身體,並更新他們的位置等...如果精靈被標記爲被刪除,你刪除它。 – tustvold

+0

那就是我所做的事情,我只是在它碰撞後立即更改標記,然後碰撞if語句就不會再被調用了! –