cocos2d粒子效果没有出现

时间:2010-10-01 12:06:06

标签: objective-c cocos2d-iphone

大家好 我只是有一个粒子效应问题不会一直出现。我使用目标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值,以确保它不隐藏在另一个对象后面,它似乎不是问题。任何人都有任何关于为什么会发生这种情况的想法? 谢谢 ģ

2 个答案:

答案 0 :(得分:0)

我建议使用71平方粒子设计师。 http://particledesigner.71squared.com/ 为我做了诀窍。

答案 1 :(得分:0)

试试这个:

  1. 在局部变量(.h)中定义发射器

  2. 在上面的代码之前调用它:

    if (emitter.parent == self) {
        NSLog(@"em1 released");
        [emitter release];
    }
    
    if (emitter2.parent == self) {
        NSLog(@"em2 released");
        [emitter2 release];
    }
    

    这会检查发射器是否为儿童并将其移除,因此您可以移除emitter.autoRemoveOnFinish,以便每次都显示您的发射器