【问题标题】:Particle Effects Disappear When Transitioning to a New SKScene过渡到新的 SKScene 时粒子效果消失
【发布时间】:2014-06-15 10:19:06
【问题描述】:

我正在使用 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];
    }

}

【问题讨论】:

  • 因为粒子节点位于一个场景中,而您正在用另一个场景替换该场景。在呈现场景 B 时,您也不希望场景 A 中的精灵保留,对吧?
  • 不,我的意思是我有一个淡入淡出过渡,而当前场景仍在淡入淡出(所有精灵仍在场景中显示),我期待粒子效果,但它只是不显示。粒子效果应该在玩家被击中时正确运行,而我在过渡到另一个场景之前会这样做。
  • 您可能希望保持过渡场景动画,skview 有一个标志

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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多