- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我将 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)
当我运行它时,发射器不会从屏幕上移除。
如果您需要更多信息,我不知道要添加什么,请询问任何帮助,我们将不胜感激。
最佳答案
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!)
}
}
这是结果(注意节点的计数在发射完成后是如何变化的):
希望对你有帮助
编辑:
对于那些对如何制作与上面视频类似的效果感兴趣的人,请尝试以下操作:
重点是使用颜色渐变,并为混合模式选择添加。
这是 .sks 文件的保管箱链接:Effect.sks
关于ios - SKEmitterNode 没有从父级中删除自己?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31729436/
SpriteKit中的SKEmitterNode允许您更改粒子属性,但不清楚如何更改特定粒子的属性。 例如,如果我们希望粒子以圆形辐射,似乎我们需要规定每个粒子的角度和速度-而不是将粒子的值指定为一个
是否可以改变已经发射的粒子的速度? SKEmitterNode 有一个particleSpeed 属性,但这仅适用于将来发射的粒子。 例如,假设我们正在构建一个宇宙飞船模拟器。想象一下在星空之上渲染的
我正在尝试使用 SKEmitterNode 创建一个星空场,我已经让它工作了。问题是当它第一次被添加到场景中时,需要几秒钟才能填满屏幕。我希望它是这样的,一旦节点被添加到场景中,整个星域就会充满屏幕,
我在项目中创建了一个模板粒子文件,并希望将其与不同的纹理图像一起使用。 我创建了这个并使用这个方法... func addEmitterWithTexture(image: UIImage, size
如何在 SpriteKit 中使用白色背景并使用 SKEmitterNode? 如果我设置 SKScene 的背景颜色,发射器就会消失。在默认的黑色背景上,我可以看到红色粒子(当我在 SKScene
我正在使用 Apple 的 Sprite Kit Framework,我想知道如何将声音文件附加到 SKEmitterNode,这样每次发射粒子时,它都会播放声音。 EG:每次发射(发射)子弹(粒子)
我的 SKScene 中发生爆炸,我希望这个爆炸甚至影响靠近它的另一个对象,对象在所有方面。我想给他们力量以逃避这个爆炸。 最佳答案 听起来你需要一个 SKFieldNode 来实现一个 vortex
我创建了一个 SKEmitterNode 在我的玩家死后附加到他身上。这是一款非常简单的烟具。问题是,当我执行以下任一操作时游戏就会崩溃: 1) 点击重试按钮并转换到同一场景,它会在随机时间使游戏崩溃
我想知道我的代码有什么问题,它没有正确显示粒子。 这是预期的粒子 实现 physicsWorld.contactDelegate = self self.scene?.backgroundCo
我正在尝试从 sks 文件加载 SKEmitterNode,但我不断收到此错误: Terminating app due to uncaught exception 'NSInvalidUnarchi
我正在自己的小游戏中玩 SKEmitterNode。我正在射击一个炮弹,当炮弹击中场景中的一个盒子时,盒子就会被摧毁,并创建一个带有简单纹理“BOOM”的粒子效果,以便在盒子消失时进行过渡。问题是,当
所以我的一个 SKEmitterNode 有问题。我有一个 SKSpriteNode,触摸它会打开一个新场景。这是开始的代码: for touch: AnyObject in touches {
过去几天,我一直在使用 Hacking With Swift 教程(特别是项目 23)学习在 Swift 中使用 Spritekit。我正在学习如何使用 SKEmitterNodes,但它们似乎从未出
我为 Guzzle 照明弹设置了粒子效果。我目前使用的是低 numParticlesToEmit 以将发射器限制为短脉冲,并在我想开始新的粒子爆发时对发射器执行 resetSimulation()。
我将 SKEmitterNode 添加为我的 mainScene 的子节点,并且超出预期它将在 particleLifetime 结束时被删除,描述为 apple docs . 像这样添加了发射器;
我目前在碰撞语句中包含此代码,如果与对象碰撞,则会发生此粒子,但如何阻止它?因为它会永远持续下去,而我只想每次接触发生几次 SKEmitterNode *emitter = [NSKeyedUnar
这就是我的情况。 我的发射器从屏幕顶部生成并移动到屏幕底部,我试图获取一个 png 图像来跟随它们(用于命中检测目的) 问题是我需要实时更新 PNG 图像来跟踪 skemitternode,并且因为我
我正在尝试在射击物体后添加爆炸,我正在使用此代码来制作该方法 func addExplosion (position : CGPoint) -> CGPoint { let explo
我正在设置一个具有固定背景(一个简单的矩形)、一个SKEmitterNode和一个backgroundLayer(一个包含许多SKShapeNode的SKNode)的场景:这是我的场景的层次结构。但是
虽然我通常更喜欢 RGB 颜色空间而不是 HSV,但我希望 SKEmitterNode 发射具有最大饱和度和值的粒子,并且具有涵盖所有颜色的色调值。这可能吗? 我是 XCode、Swift 和 Spr
我是一名优秀的程序员,十分优秀!