将粒子发射器添加到FlappySwift项目中

时间:2014-06-06 14:14:20

标签: ios sprite-kit swift particles

我今天一直在玩Swift游戏,我将FlappyBird克隆分叉并进行了一些更改,例如添加了碰撞检测。

我希望当鸟撞到管道时会发出一些粒子,所以我做了一些阅读并找到了SKEmitterNode类。然而,所有文档都在Objective-C中,所以我不得不将它全部转换为Swift,因为目前没有关于如何在Swift中使用SpriteKit的在线内容。

这就是我试图创建发射器

的方法
// sparkles and burstEmitter are defined as class variables
sparkles = SKTexture(imageNamed: "bird-01") //reusing the bird texture for now
burstEmitter = SKEmitterNode()
burstEmitter.particleTexture = sparkles
burstEmitter.position = CGPointMake(200, 200)
burstEmitter.particleBirthRate = 20
burstEmitter.numParticlesToEmit = 200;
self.addChild(burstEmitter)

这看起来不错吗?

当我建立时,屏幕上看不到任何粒子。

我的fork的完整源代码在github上 - https://github.com/jolyonruss/FlappySwift

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

因此事实证明,SKEmitterNode需要更多属性才能使其工作,我添加了以下内容并且我发现了一些粒子。

burstEmitter.particleLifetime = 3.0
burstEmitter.particleSpeed = 10.0
burstEmitter.xAcceleration = 100
burstEmitter.yAcceleration = 50

答案 1 :(得分:0)

您也可以通过.sks文件使用Xcode 6自己的粒子编辑器。

这是我在Swift中使用的一些代码,其中包含了能够在XCode中编辑粒子效果的好处

//spark particle effect

    let sparkEmmitterPath:NSString = NSBundle.mainBundle().pathForResource("sparkParticleEffect", ofType: "sks")

    let sparkEmmiter = NSKeyedUnarchiver.unarchiveObjectWithFile(sparkEmmitterPath) as SKEmitterNode

    sparkEmmiter.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2 - 200)
    sparkEmmiter.name = "sparkEmmitter"
    sparkEmmiter.zPosition = 1
    sparkEmmiter.targetNode = self

    self.addChild(sparkEmmiter)

这只会将效果置于屏幕中央。显然,这可以根据您使用效果的方式进行编辑。希望这会有所帮助。

答案 2 :(得分:0)

所以这对于创建一个粒子很好,但是有什么方法可以删除它, sparkEmmiter.particleLifetime不会自动删除它

 let sparkEmmiter = SKEmitterNode(fileNamed: "MyParticle.sks")
 sparkEmmiter.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2 - 200)
 sparkEmmiter.name = "sparkEmmitter"
 sparkEmmiter.zPosition = 1
 sparkEmmiter.targetNode = self
 sparkEmmiter.particleLifetime = 1

 self.addChild(sparkEmmiter)