SKEmitterNode是不是从父母中删除自己?

我添加了SKEmitterNode作为我的mainScene的一个childNode,并且比预期的要好,它会在particleLifetime结束时被移除,就像apple文档一样 。

添加了这样的发射器;

  var emitterPath : String = NSBundle.mainBundle().pathForResource("ShipFire", ofType: "sks")! var emitter : SKEmitterNode = NSKeyedUnarchiver.unarchiveObjectWithFile(emitterPath) as! SKEmitterNode emitter.position = position emitter.particleLifetime = 0.1; self.addChild(emitter) 

我的SKEmitterNode属性如下图所示 ShipEngine.sks

当我运行它时,发射器不会从屏幕上移除。

模拟器

我不知道要添加更多,如果你需要更多的信息,请咨询任何帮助,将不胜感激。

particleLifetime以秒为单位确定粒子的平均寿命。 这不会影响从父级删除SKEmitterNode。

粒子编辑器的“ 粒子”区域中引用“ 最大值”字段的numOfParticlesToEmit决定了发射器在停止之前应该发射的粒子数量。 这也不会影响从父母中删除SKEmitterNode。 另外请注意,您已经在此字段中设置了0,这将启用无限发射。

因此,如果您想在发射器完成发射后从父节点中删除节点,则可以设置要发射的粒子数(字段在编辑器内的粒子区域中称为最大值 ),然后运行SKAction序列:

  • 启动一个发射器
  • 等待一段时间
  • 并从父母上移除发射器(此时发射器应完成发射)

下面是一个简单的例子,向您展示如何使用SKAction序列完成此操作:

 class GameScene: SKScene { let emitter : SKEmitterNode = NSKeyedUnarchiver.unarchiveObjectWithFile(NSBundle.mainBundle().pathForResource("MyParticle", ofType: "sks")!) as SKEmitterNode override func didMoveToView(view: SKView) { self.backgroundColor = SKColor.blackColor() } func addEmitter(position:CGPoint){ var emitterToAdd = emitter.copy() as SKEmitterNode emitterToAdd.position = position let addEmitterAction = SKAction.runBlock({self.addChild(emitterToAdd)}) var emitterDuration = CGFloat(emitter.numParticlesToEmit) * emitter.particleLifetime let wait = SKAction.waitForDuration(NSTimeInterval(emitterDuration)) let remove = SKAction.runBlock({emitterToAdd.removeFromParent(); println("Emitter removed")}) let sequence = SKAction.sequence([addEmitterAction, wait, remove]) self.runAction(sequence) } override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { let touch: AnyObject? = touches.anyObject() let location = touch?.locationInNode(self) self.addEmitter(location!) } } 

这里是结果(注意发射完成后节点的数量是如何变化的):

从场景中移除发射器

希望这可以帮助

编辑:

对于那些对如何从上面的video产生类似效果感兴趣的人,请尝试一下这样的事情:

发射器设置

重点是使用颜色渐变,并select添加混合模式。

这里是.sks文件的保险箱链接: Effect.sks

将你的粒子“BirthRate”和“Maximum”都设置为20.将max设置为0将重复出生。

图片