在我的代碼中,我想摧毀兩個聯繫人中的一個。內beginContact在CCPhysicsSprite以下方法被稱爲:保存要銷燬的接觸體
-(void)contactMade:(CCPhysicsSprite*)contactedSprite {
int spriteTag1 = self.tag;
int spriteTag2 = contactedSprite.tag;
if (((spriteTag1 == 3) && (spriteTag2 == 4)) || ((spriteTag1 == 4) && (spriteTag2 == 3)) {
CCPhysicsSprite* heroSprite = (CCPhysicsSprite*)[self getChildByTag:4];
b2World* world;
world->DestroyBody(heroSprite.b2Body);
heroSprite.b2Body = NULL;
[heroSprite.parent removeChild:heroSprite];
}
我得到一個信號SIGABRT指向
b2Assert(m_bodyCount > 0);
在這個問題上搜索後。我讀到,在時間步後,聯絡主體必須被保存和銷燬。我如何做到這一點,因爲我已經在CCPhyscisSprite中設置了我的聯繫條件。
您需要將要被銷燬的物體添加到數組中,最好是在運行box2d世界步驟的類中。在該步驟之後,銷燬陣列中的所有物體並將其清空。提示:在http://www.koboldtouch.com中,您可以直接在聯繫人回叫方法中銷燬這些身體。 – LearnCocos2D 2013-05-14 10:45:02