В моей игре у меня есть около 6 различных вариаций объектов.К каждому объекту прикреплены b2Body, b2BodyDef и b2FixtureDef.В моем случае мои b2Bodys следуют за моими CCSprites, поскольку Cocos2D проще с анимацией.
В любом случае я пытаюсь следовать учебному пособию Рэя Вендерлиха: http://www.raywenderlich.com/606/how-to-use-box2d-for-just-collision-detection-with-cocos2d-iphone
Дело в том, что я совершенно запуталсячто он на самом деле делает!Вопросы: 1. Должен ли мой код прослушивателя контактов в моей CCScene быть в моей игровой петле?2. Это его основной код для обнаружения коллизий в его CCScene: 3. Также я вижу, что в приведенном ниже коде он использует теги для своих CCSprites, означает ли это, что мои CCSprites не обязательно должны быть иварами?А как насчет моих b2Bodys, b2BodyDefs и b2FixtureDefs, они должны быть иварами?Он просто делает это по тэгам?
std::vector<b2Body *>toDestroy;
std::vector<MyContact>::iterator pos;
for(pos = _contactListener->_contacts.begin();
pos != _contactListener->_contacts.end(); ++pos) {
MyContact contact = *pos;
b2Body *bodyA = contact.fixtureA->GetBody();
b2Body *bodyB = contact.fixtureB->GetBody();
if (bodyA->GetUserData() != NULL && bodyB->GetUserData() != NULL) {
CCSprite *spriteA = (CCSprite *) bodyA->GetUserData();
CCSprite *spriteB = (CCSprite *) bodyB->GetUserData();
if (spriteA.tag == 1 && spriteB.tag == 2) {
toDestroy.push_back(bodyA);
} else if (spriteA.tag == 2 && spriteB.tag == 1) {
toDestroy.push_back(bodyB);
}
}
}
std::vector<b2Body *>::iterator pos2;
for(pos2 = toDestroy.begin(); pos2 != toDestroy.end(); ++pos2) {
b2Body *body = *pos2;
if (body->GetUserData() != NULL) {
CCSprite *sprite = (CCSprite *) body->GetUserData();
[_spriteSheet removeChild:sprite cleanup:YES];
}
_world->DestroyBody(body);
}
if (toDestroy.size() > 0) {
[[SimpleAudioEngine sharedEngine] playEffect:@"hahaha.caf"];
}
Дело в том, что раньше у него было только 2 вещи, которые МОГУТ столкнуться.В моем случае у меня 6. Так что мне нужно будет каким-либо образом изменить этот код для работы с моими 6 возможными b2Bodys?
Спасибо!