【问题标题】:Adding a particle emitter to the FlappySwift project将粒子发射器添加到 FlappySwift 项目
【发布时间】:2014-06-06 14:14:20
【问题描述】:

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


    【解决方案1】:

    您还可以通过 .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)
    

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

    【讨论】:

    • 感谢@Chuck 的更新,作为一个真正有意义的 Objective-C 新手,我猜它的优点之一是冗长。
    • 没问题 :-) 是的,我喜欢在 Xcode 中直接用 6 编辑粒子的能力。过去我使用了一个名为 PhysicsEditor 的程序来做同样的事情。无需在代码中单独输入所有这些属性,从而节省时间。
    • 就在我的头顶 self.removeChild(sparkEmmitter) 应该在这种情况下删除效果。当然,您必须重新添加它才能重新启用它。我相信还有一种方法可以在不将其完全从场景中移除的情况下将其关闭。只是暂时不确定;这样做可以节省帧率,因为不必重新分配粒子效果的数据。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多