我该如何制作五彩纸屑?

11

我想要发射彩带粒子。每个粒子都是相同的形状,但我希望每个粒子的颜色是我指定的一组颜色中的随机颜色。

是否有一种方法使每个发射的粒子具有随机颜色,还是我需要为每个粒子颜色单独设置一个发射器?


2
@sangony 我已经创建了这些粒子,但是我不知道如何使它们成为随机颜色。我在网上查找了很长时间,但是找不到任何信息。 - asdfg
2个回答

8
您可以使用单个发射器来实现您想要的效果:
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])))


    }

}

编辑:

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

您还可以在粒子编辑器中玩弄色带,以达到相同的效果:

enter image description here

或者您可以使用particleColorSequenceSKKeyframeSequence来改变粒子颜色随着其生命周期的变化。希望这能有所帮助。


但这样做不会产生混合颜色,就像你需要的彩带一样。你只能在一秒钟内得到一些颜色,然后在下一秒钟得到另一种颜色,以此类推。所有粒子都是相同的颜色,颜色只是每秒钟变化一次。它看起来非常不自然。或者我误解了代码? - asdfg
是的,你说得对,我忘记改变等待动作的持续时间了。请检查编辑。 - Whirlwind

0

这个看起来不错,但在iPad mini 4上降低了20fps的帧率。 - Ron Myschuk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接