I essentially want to emit confetti particles. Each particle is the same shape, however, I want each particle to be a random colour from a selection of colors I specify.
Is there a way for each emitted particle to have a random color or do I need a separate emitter for each particle color?
Choose paper or cardstock for the most color variety. Purchase paper in any weight or color you like. For simple confetti, use white printer paper or use multicolored paper if you'd like a burst of color. For a simple way to make unique confetti, purchase origami paper that has designs or patterns printed on them.
Alternatively you can use leaves from yours and your family's gardens. Simply dry them out and then use a hole punch to create circular confetti or a heart stamp to create heart shapes! These don't last forever but will last for a week at least.
You can use single emitter to achieve what you want:
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])))
}
}
EDIT:
Try changing duration of wait action to get different results.
You can play with color ramp too (in particle editor) to achieve the same effect:
Or you can use particleColorSequence and SKKeyframeSequence in order to change particle color over its lifetime. Hope this helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With