大家好 我只是有一个粒子效应问题不会一直出现。我使用目标c和cocos2d为iphone编码。 以下是相关代码。
CCParticleExplosion *emitter;
emitter = [[CCParticleExplosion alloc] initWithTotalParticles:30];
emitter.texture = [[CCTextureCache sharedTextureCache] addImage:@"particle_bubble.png"];
emitter.position = ccp(MidX,MidY);
emitter.life =0.5;
emitter.duration = 0.5;
emitter.speed = 60;
[self addChild:emitter];
emitter.autoRemoveOnFinish = YES;
////////////////////////////////////////////////////
CCParticleMeteor *emitter2;
emitter2 = [[CCParticleMeteor alloc] initWithTotalParticles:150];
emitter2.texture = [[CCTextureCache sharedTextureCache] addImage:@"fire_particle.png"];
emitter2.position = ccp(MidX,MidY);
emitter2.life = 0.5;
emitter2.duration = 2;
emitter2.speed = 60;
id emitMove = [CCMoveTo actionWithDuration:0.5 position:HUD.moonSprite.position ];
[self addChild:emitter2 z:1];
[emitter2 runAction:[CCSequence actions:emitMove, nil]];
emitter2.autoRemoveOnFinish = YES;
此代码在相同的功能内,如图所示。 但有时第二个粒子效果不会创建,我无法弄清楚为什么。第一个粒子效果始终没有问题,所以我确定它正确进入功能,但有时(几乎50%)第二个流星发射器没有显示。我已经尝试搞乱z值,以确保它不隐藏在另一个对象后面,它似乎不是问题。任何人都有任何关于为什么会发生这种情况的想法? 谢谢 ģ
答案 0 :(得分:0)
我建议使用71平方粒子设计师。 http://particledesigner.71squared.com/ 为我做了诀窍。
答案 1 :(得分:0)
试试这个:
在局部变量(.h)中定义发射器
在上面的代码之前调用它:
if (emitter.parent == self) {
NSLog(@"em1 released");
[emitter release];
}
if (emitter2.parent == self) {
NSLog(@"em2 released");
[emitter2 release];
}
这会检查发射器是否为儿童并将其移除,因此您可以移除emitter.autoRemoveOnFinish
,以便每次都显示您的发射器