私はbox2dベースのゲームを使用しており、プレイヤーの体が敵の体と衝突したことを検出しますが、衝突したポイントで敵のdestroybodyメソッドを作成すると、敵は破壊できず、エラーが発生し、アプリがクラッシュします。コードを表示します
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)
{
// SpriteA = PlayerSprite
// SpriteB = EnemySprite
NSString *t=[NSString stringWithFormat:@"Game Over"];
label.string=t;
[self removeChild:spriteB cleanup:YES];
world->DestroyBody(bodyB);
}
else if (spriteA.tag == 2 && spriteB.tag == 1)
{
//toDestroy.push_back(bodyB);
NSLog(@"Enemy Touch");
}
}
}
ここで私のspriteBは破壊できません。もう1つは、敵のスプライトがEnemy.mmファイルにあることです。
私がこの問題で立ち往生しているのを手伝ってください。前もって感謝します