在我的代码中,我一直使用spriteA = (__bridge CCSprite *) bodyA->GetUserData(); //where spriteA is a CCSprite and bodyA is a b2Body.
我使用它来获取与bodyA链接的任何sprite。我的问题是,我该怎么做呢?我有一个精灵,我想知道b2Body与它有什么关系。我该怎么做呢?如何获得当前CCSprite的b2Body
编辑
我不知道阉我把它正确与否,但我试图删除所有b2bodies(和精灵)在名为ROW4一旦阵中还有没有更多的蓝色物体(在row4BlueArray对象) 这里是我的蜱方法的代码的一部分:
//Find the sprite for the b2Bodies
else if (bodyA->GetUserData() != NULL && bodyB->GetUserData() != NULL) {
spriteA = (__bridge CCSprite *) bodyA->GetUserData();
spriteB = (__bridge CCSprite *) bodyB->GetUserData();
contactPositionX = spriteA.position.x;
contactPositionY = spriteB.position.y;
//If sprite is a member of row 4 (tag 400)
if (spriteA.tag == 400 && spriteB.tag == 8)
{
[self createExplosionBlue];
[self addTileScore];
[self removeChild:spriteA cleanup:YES];
[self removeChild:spriteB cleanup:YES];
NSLog(@"row 4 count: %d",row4BlueArray.count);
//Remove object from another array
[row4BlueArray removeLastObject];
toDestroy.insert(bodyA);
toDestroy.insert(bodyB);
[self unschedule:@selector(tick:)];
ballCount = 0;
//if that array is empty, then remove all objects from this array (row4)
if (row4BlueArray.count == 0) {
for (b2Body * b = _world->GetBodyList(); b != NULL; b = b->GetNext()) {
Box2DSprite * sprite = (__bridge Box2DSprite*) b->GetUserData();
b2Body * spriteBody = sprite.body;
//not sure how to remove all bodies in an array (row4)`
}
}
}
这可能工作!那么如何用CCSprite访问b2Body? – evanlws
有可能替代扩展CCSprite。如果你不喜欢这种模式,让我知道,我会尝试拿出别的东西 –
是的,我一直在“Box2dSprite”类型的对象上找不到“Property”主体。在抱歉之前,我从未扩展CCSprite。有没有像我提到的方式? – evanlws