Swift 粒子效果后如何从屏幕中删除精灵节点

Swift 粒子效果后如何从屏幕中删除精灵节点,swift,sprite-kit,skspritenode,skemitternode,sktransition,Swift,Sprite Kit,Skspritenode,Skemitternode,Sktransition,我已经将我的粒子效果附加到发生碰撞时要“爆炸”的节点,从而结束游戏。然后我希望场景切换到游戏结束场景。如果传出场景暂停,则粒子效果不会发生,但现在我已将其设置为“不暂停”,碰撞不断发生,并且随着游戏不断返回传出场景,游戏结束场景永远不会出现。为了克服这个问题,我想我可以补充: rocket.removeFromParent()这样就不会发生碰撞,但这意味着粒子效果不会发生。有没有办法让它发生粒子效应,然后移除火箭,这样我就可以两者兼得? 我希望这是有意义的 如果我正确理解了您的问题,您可以将粒子

我已经将我的粒子效果附加到发生碰撞时要“爆炸”的节点,从而结束游戏。然后我希望场景切换到游戏结束场景。如果传出场景暂停,则粒子效果不会发生,但现在我已将其设置为“不暂停”,碰撞不断发生,并且随着游戏不断返回传出场景,游戏结束场景永远不会出现。为了克服这个问题,我想我可以补充:
rocket.removeFromParent()
这样就不会发生碰撞,但这意味着粒子效果不会发生。有没有办法让它发生粒子效应,然后移除火箭,这样我就可以两者兼得?
我希望这是有意义的

如果我正确理解了您的问题,您可以将粒子效果添加为
SKScene
子类的子类,而不是
rocket
的子类。因此,移除火箭时,粒子效果也不会被移除。只需确保将
SKEmitter
的位置设置为
火箭的位置,以使粒子出现在正确的位置。例如:

func collisionHappened() {
    let explosion = SKEmitterNode(fileNamed: "rocketExplosion")
    rocket.addChild(explosion)
    let sceneChange = gameOverScene(size: self.size)
    sceneChange.scaleMode = scaleMode
    let reveal = SKTransition.crossFadeWithDuration(3)
    self.view?.presentScene(sceneChange, transition: reveal)
    reveal.pausesOutgoingScene = false
}

哦,好吧,这听起来是个更好的主意,所以如果火箭在一个触摸位置上移动,我是否将发射器设置为相同的触摸位置,使其出现在火箭位置上?
func collisionHappened() {
    let explosion = SKEmitterNode(fileNamed: "rocketExplosion")
    explosion.position = rocket.position
    // I'm assuming 'self' is your SKScene subclass.
    self.addChild(explosion)

    let sceneChange = gameOverScene(size: self.size)
    sceneChange.scaleMode = scaleMode
    let reveal = SKTransition.crossFadeWithDuration(3)
    self.view?.presentScene(sceneChange, transition: reveal)
    reveal.pausesOutgoingScene = false
}