SKAction 仅更新最后一个实例化的精灵

SKAction Updating Last Instantiated Sprite Only

在从背部手术恢复期间自学 spritekit。非常感谢您提供的任何帮助或指导。

我有一个函数可以添加一个带有子 SKEmitter 的 "monster" 精灵。我想将此发射器更新为 "turn on" 和 "turn off" SKEmitter。只要屏幕上只有一个精灵,这个功能就会起作用。从该函数创建第二个节点的那一刻,第一个节点停止打开和关闭。

在我看来,SKAction 仅作用于最新节点。我无法告诉我如何解决这个问题。

我在 UI 中看到的示例。

我的代码:

    flameThrowerSplash = SKEmitterNode(fileNamed: "flamesThrowerSplash.sks")!
    let newX = flameThrowerSplash.position.x - 475
    let newY = flameThrowerSplash.position.y + (zombie1.size.height * 0.7)
    let newLocation = CGPointMake(newX, newY)

    flameThrowerSplash.position = newLocation
    flameThrowerSplash.targetNode = currentScene

    let wait = SKAction.waitForDuration(0.5)
    let pauseEmitter = SKAction.runBlock({self.flameThrowerSplash.particleBirthRate = 0})
    let startEmitter = SKAction.runBlock({ self.flameThrowerSplash.particleBirthRate = 455})
    let wait2 = SKAction.waitForDuration(0.5)
    let run = SKAction.sequence([wait, startEmitter,wait2, pauseEmitter])

    zombie1.runAction(SKAction.repeatActionForever(run))

您似乎不想让 flameThrowerSplash 成为一个场景 属性。

而不是这个

flameThrowerSplash = SKEmitterNode(fileNamed: "flamesThrowerSplash.sks")!

声明为新变量即可

let flameThrowerSplash = SKEmitterNode(fileNamed: "flamesThrowerSplash.sks")

然后就可以独立的给每个僵尸添加了。

您正在为每个新僵尸重新分配它。这就是它消失的原因。