今天我一直在和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
谢谢你的帮助
因此,事实证明SKEmitterNode需要更多属性才能使其正常工作,我添加了以下内容并且我发现了一些粒子。
burstEmitter.particleLifetime = 3.0
burstEmitter.particleSpeed = 10.0
burstEmitter.xAcceleration = 100
burstEmitter.yAcceleration = 50
您还可以通过.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)
这只是将效果放在屏幕的中心。显然,这可以根据您使用效果的方式进行编辑。希望这可以帮助。