转换到新的SKScene时,粒子效果消失

时间:2014-06-15 10:19:07

标签: ios objective-c sprite-kit skscene skemitternode

我正在使用Sprite Kit开发游戏。我有一个粒子效果,当一个物体与另一个物体碰撞时运行;然而,当我向另一个SKScene添加过渡时,这个粒子效果似乎消失了。导致这种消失的原因是什么?如何解决这个问题?

编辑:通过消失我的意思是当场景仍在转换并且所有精灵仍在显示时,它不会出现在当前场景中。它有2秒的时间间隔,所以我不能看到它吗?

这里是粒子效果和场景转换的代码:

- (void)player:(SKSpriteNode *)player didCollideWithEnemy:(SKSpriteNode *)enemy {
    Enemy *monster = (Enemy *)enemy;
    if(!monster.isMoving){
        SKEmitterNode *emitter =  [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle mainBundle] pathForResource:@"MyParticle" ofType:@"sks"]];
        emitter.position = player.position;
        [self addChild: emitter];
        isAlive = FALSE;
        NSLog(@"Hit");
        CrowdedData *crowdedData = [CrowdedData sharedManager];
        crowdedData.score = score;
        [player removeFromParent];


        SKTransition *reveal = [SKTransition fadeWithDuration:2];   
        GameOver *scene = [GameOver sceneWithSize:self.view.bounds.size];
        scene.scaleMode = SKSceneScaleModeAspectFill;
        [self.view presentScene:scene transition:reveal];
    }

}

1 个答案:

答案 0 :(得分:2)

SKTransition有两个与此相关的属性:

[transition setPausesOutgoingScene:NO];
[transition setPausesIncomingScene:NO];

两者都默认为YES,导致传入场景中的传出暂停,从而暂停您的发射器。出于您的目的,将pausesOutgoingScene属性设置为NO应足以解决此问题。更多信息在文档中:

https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKView/Reference/Reference.html