感谢您的时间!如何在延迟时间后删除sprite/b2body?
我正在用box2d做一个项目。当我第一次触摸屏幕,一只鸟会在Box2D的世界中创建,如下
- (void)createBird
{
//init bird
bird = [CCSprite spriteWithFile:@"bird.png"];
bird.scale = 23/[bird boundingBox].size.width;
bird.position = center;
[self addChild:bird z:12];
}
然后,如果触摸结束,鸟会给出一个力
//add box2d body
b2BodyDef birdBodyDef;
birdBodyDef.type=b2_dynamicBody;
birdBodyDef.userData = (__bridge void*)bird;
birdBodyDef.position.Set(bird.position.x/PTM_RATIO,bird.position.y/PTM_RATIO);
birdBody=world->CreateBody(&birdBodyDef);
//create circle shape
b2CircleShape birdShape;
birdShape.m_radius=([bird boundingBox].size.width-6)/PTM_RATIO/2;
// Create shape definitio and add to body
b2FixtureDef birdFixtureDef;
birdFixtureDef.shape=&birdShape;
birdFixtureDef.density=1.6f;
birdFixtureDef.friction=0.3f;
birdFixtureDef.restitution=0.3f;
birdFixture = birdBody -> CreateFixture(&birdFixtureDef);
// Apply force
b2Vec2 force = b2Vec2(-2.0f*distance,-2.0f*distance);
birdBody->ApplyForce(force,birdBody->GetWorldCenter());
birdBody->SetLinearDamping(0.2f);
然后,当我再次触摸屏幕,另一只鸟将使用“createBird”方法创建。
我想删除第一只鸟,创建5秒之后。但那时候,“CCSprite * bird”和“b2Body * birdBody”会指向第二只鸟,那么我该如何删除第一只鸟呢?
谢谢!
感谢您的回复!但是对于“actionWithTarget:bird”,现在这只鸟是指新鸟,而不是第一只。我想知道如何删除第一个。我想我应该使用一个NSMutableArray,但我不太确定如何做到这一点。 – alanlzl
检查我的编辑,我希望它很明确 – wingNut86
谢谢!这有帮助! – alanlzl