我有一个功能,可以添加一个"怪物"带有孩子SKEmitter的精灵。我想将此发射器更新为"打开"并且"关闭" SKEmitter。只要屏幕上只有一个精灵就可以运行。从该功能创建第二个节点的那一刻,第一个节点停止打开和关闭。
在我看来,SKAction仅在最新节点上运行。我无法告诉我如何解决这个问题。
我的代码:
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))
答案 0 :(得分:2)
看起来你并不希望flameThrowerSplash成为一个场景属性。
而不是
flameThrowerSplash = SKEmitterNode(fileNamed: "flamesThrowerSplash.sks")!
将其声明为新变量
let flameThrowerSplash = SKEmitterNode(fileNamed: "flamesThrowerSplash.sks")
然后你可以独立地将它添加到每个僵尸。
你为每个新的僵尸重新分配它......这就是它消失的原因。