gpt4 book ai didi

ios - SKEmitterNode 没有从父级中删除自己?

转载 作者:搜寻专家 更新时间:2023-10-31 21:51:09 25 4
gpt4 key购买 nike

我将 SKEmitterNode 添加为我的 mainScene 的子节点,并且超出预期它将在 particleLifetime 结束时被删除,描述为 apple docs .

像这样添加了发射器;

    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

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

Simulator

如果您需要更多信息,我不知道要添加什么,请询问任何帮助,我们将不胜感激。

最佳答案

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!)



}


}

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

Removing emitters from scene

希望对你有帮助

编辑:

对于那些对如何制作与上面视频类似的效果感兴趣的人,请尝试以下操作:

emitter setup

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

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

关于ios - SKEmitterNode 没有从父级中删除自己?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31729436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com