Swift SKAction仅更新上次实例化的精灵

Swift SKAction仅更新上次实例化的精灵,swift,sprite-kit,swift2,skaction,skemitternode,Swift,Sprite Kit,Swift2,Skaction,Skemitternode,在从背部手术中恢复的同时自学spritekit。非常感谢您提供的任何帮助或指导 我有一个函数,可以添加一个“怪物”精灵和一个孩子SKEmitter。我想将此发射器更新为“打开”和“关闭”SKEmitter。只要屏幕上只有一个精灵,此功能就可以正常工作。从函数创建第二个节点时,第一个节点停止打开和关闭 在我看来,SKAction只作用于最新的节点。我就是不知道该怎么解决这个问题 我在UI中看到的示例 我的代码: flameThrowerSplash = SKEmitterNode(file

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

我有一个函数,可以添加一个“怪物”精灵和一个孩子SKEmitter。我想将此发射器更新为“打开”和“关闭”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))

看起来您不希望FlameSprowerSplash成为场景属性

而不是这个

flameThrowerSplash = SKEmitterNode(fileNamed: "flamesThrowerSplash.sks")!
只需将其声明为一个新变量

let flameThrowerSplash = SKEmitterNode(fileNamed: "flamesThrowerSplash.sks")
然后,您可以将其单独添加到每个僵尸


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

我对这个代码感到困惑,喷火器分配给什么?你的场景?将火焰喷射器指定给僵尸,并在僵尸上运行粒子,否则火焰喷射器飞溅将被覆盖,而之前的火焰喷射器飞溅将仅作为场景的子对象存在,您将无法访问它,相反,僵尸1和僵尸2都将控制火焰喷射器飞溅的最新实例我的道歉,我只包括了控制SKActions的代码,这些代码围绕着改变火焰喷射器的变量。添加“怪物”和火焰喷射器的完整功能与上面的功能完全相同。问题是,当添加第二个“怪物”时,您将看到第一个怪物不再打开和关闭。如果我录制了一段较长的视频,您会看到,随着每个新怪物的添加,只有最后一个添加的怪物会受到SKaction的影响,以打开和关闭发射器。(很抱歉给你带来困惑)谢谢你的评论你看过我的评论了吗?我明白为什么@Hamobo抛弃了你,他只是抄了我的评论,没有解释,而且做得很差,因为他的答案甚至没有解决问题。阅读我的整个评论,你产生的每一个新僵尸都控制着最新的火焰喷射器。如果我是你,让僵尸成为一个自定义类,并在类中生成一个火焰喷射器,如果我有更多的代码,我可以在回答中向你展示如何正确地完成它,直到那时它将是猜测。非常感谢,我复制并回去编辑它,但我没有意识到编辑我的评论时有一个5分钟的计时器-(非常感谢您的反馈。我将进行分类,但在我现在看到问题时会将其标记为已解决。很抱歉,我只包含了控制SKActions的代码,用于更改火焰喷射器的变量。添加“怪物”的完整函数)火焰喷射器和上面的一样。问题是当第二个“怪物”添加-您将看到第一个怪物不再打开和关闭。如果我录制了更长的视频片段,您将看到随着每个新怪物的添加,只有最后一个添加的怪物会受到SKaction的影响,以更改发射器的打开和关闭。(很抱歉造成混淆)谢谢你的评论。不,这不是完整的答案,你只是让他的火焰喷射器成为本地的,没有解决他的其余代码,这将导致其他问题,如编译错误和内存泄漏