В моем коде я хотел бы уничтожить одно из двух контактирующих тел. В 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