【问题标题】:How do I make confetti?我如何制作五彩纸屑?
【发布时间】:2015-09-12 17:35:28
【问题描述】:

我本质上是想发射五彩纸屑颗粒。每个粒子都是相同的形状,但是,我希望每个粒子都是我指定的颜色选择中的随机颜色。

是否有办法让每个发射的粒子具有随机颜色,或者我是否需要为每种粒子颜色使用单独的发射器?

【问题讨论】:

  • @sangony 我已经创建了粒子,但我不知道如何让它们成为随机颜色。我在网上找了好久也没找到。

标签: ios swift sprite-kit particles


【解决方案1】:

您可以使用单个发射器来实现您想要的:

import SpriteKit


class GameScene: SKScene, SKPhysicsContactDelegate {



    let emitter = SKEmitterNode(fileNamed: "particle")
    let colors = [SKColor.whiteColor(),SKColor.grayColor(),SKColor.greenColor(),SKColor.redColor(),SKColor.blackColor()]


    override func didMoveToView(view: SKView) {


        self.physicsBody = SKPhysicsBody(edgeLoopFromRect: self.frame)


        emitter.position = CGPoint(x: 200, y:300)

        emitter.particleColorSequence = nil
        emitter.particleColorBlendFactor = 1.0

        self.addChild(emitter)

        let action = SKAction.runBlock({
            [unowned self] in
            let random = Int(arc4random_uniform(UInt32(self.colors.count)))

            self.emitter.particleColor = self.colors[random];
            println(random)
        })

        let wait = SKAction.waitForDuration(0.1)

        self.runAction(SKAction.repeatActionForever( SKAction.sequence([action,wait])))


    }

}

编辑:

尝试更改等待操作的持续时间以获得不同的结果。

您也可以使用颜色渐变(在粒子编辑器中)来达到相同的效果:

或者您可以使用particleColorSequenceSKKeyframeSequence 来在其生命周期内更改粒子颜色。希望这可以帮助。

【讨论】:

  • 但这不会像五彩纸屑那样混合颜色。您只会在一秒钟内获得一些颜色,然后在下一秒钟获得另一种颜色,依此类推。粒子都是相同的颜色,颜色会每秒改变一次。它看起来非常不自然。还是我误解了代码?
  • 是的,你是对的,我忘了更改等待动作的持续时间。请检查编辑。
【解决方案2】:

仅适用于其他可能想要回答此问题的人。有一个框架叫做SAConfettiViewhttps://github.com/sudeepag/SAConfettiView。一定要看看!它对我有用。

【讨论】:

  • 这个看起来不错,但在 iPad mini 4 上我的帧速率下降了 20fps
猜你喜欢
  • 2018-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
  • 2021-07-17
  • 2018-06-02
  • 1970-01-01
相关资源
最近更新 更多