我今天一直在玩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
感谢您的帮助
答案 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)