首页 > 解决方案 > SKEmitterNode 从父节点移除后在屏幕上留下粒子

问题描述

在我的游戏中,我使用 SKEmitterNode 添加了一个粒子效果,该效果会播放几秒钟然后从游戏中删除。

但是,当移除时,这些颗粒会永久留在屏幕上。

这是添加和删除发射器的代码:

    // debrisNode is a child of scene
    let emitter = SKEmitterNode(fileNamed: "shatter.sks"),
    emitter.name = debrisNode.name
    emitter.targetNode = scene

    debrisNode.addChild(emitter)

    debrisNode.run(
        .sequence([
            .scale(to: 0.1, duration: 1),
            .run {
                emitter.particleBirthRate = 0
                emitter.targetNode = nil
                emitter.removeAllChildren()
                emitter.removeFromParent()
            }]))

编辑:我现在认为这与我使用targetNode. 当我设置targetNode = debrisNode时,粒子消失了——但我需要 targetNode 来使任何动画看起来正确。

标签: iosswiftsprite-kitskemitternode

解决方案


推荐阅读