Эффекты частиц исчезают при переходе на новую SKScene

Я работаю над игрой, используя 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];
    }

}

person Alexyuiop    schedule 15.06.2014    source источник
comment
потому что узел частиц находится в одной сцене, а вы заменяете сцену другой. Вы же не ожидаете, что спрайты из сцены А останутся и при представлении сцены Б, верно?   -  person LearnCocos2D    schedule 15.06.2014
comment
Нет, я имею в виду, что у меня есть переход затухания, и хотя текущая сцена все еще затухает (все спрайты все еще отображаются на сцене), я ожидаю эффекта частиц, но он просто не отображается. Предполагается, что эффект частиц срабатывает сразу после удара по игроку, и я делаю это перед переходом к другой сцене.   -  person Alexyuiop    schedule 15.06.2014
comment
вы можете захотеть сохранить анимированные сцены перехода, у skview есть флаг для этого   -  person LearnCocos2D    schedule 15.06.2014


Ответы (1)


SKTransition имеет два свойства, которые имеют отношение к этому:

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

Оба по умолчанию имеют значение YES, что приводит к приостановке исходящих и входящих сцен, что, в свою очередь, приостанавливает работу вашего эмиттера. Для ваших целей достаточно установить для свойства pausesOutgoingScene значение NO, чтобы исправить это. Больше информации в документах:

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

person Mick MacCallum    schedule 15.06.2014