【问题标题】:How to remove sprite node from screen after particle effect粒子效果后如何从屏幕上删除精灵节点
【发布时间】:2015-07-07 18:39:27
【问题描述】:
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
}

我已将粒子效果附加到我想在发生碰撞时“爆炸”的节点,从而结束游戏。然后我希望场景更改为游戏结束场景。如果输出场景暂停,则粒子效果不会发生,但现在我将其设置为不暂停,碰撞继续发生,并且游戏结束场景永远不会出现,因为游戏会继续返回输出场景。为了克服这个问题,我想我可以添加: rocket.removeFromParent() 这样就不会再发生碰撞,但这意味着粒子效果不会发生。有什么办法可以让粒子效果发生,然后火箭被移除,这样我就可以两者兼得? 我希望这是有道理的!

【问题讨论】:

    标签: swift sprite-kit skspritenode skemitternode sktransition


    【解决方案1】:

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

    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
    }
    

    【讨论】:

    • 哦,好吧,这听起来是个好主意,所以如果火箭在触摸位置移动,我是否将发射器设置到相同的触摸位置以使其出现在火箭位置?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    相关资源
    最近更新 更多