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

问题描述 投票:2回答:3

今天我一直在和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

谢谢你的帮助

ios sprite-kit swift particles
3个回答
0
投票

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

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

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)

这只是将效果放在屏幕的中心。显然,这可以根据您使用效果的方式进行编辑。希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.