Вы можете использовать одиночный излучатель для достижения того, что вы хотите:
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:
Попробуйте изменить продолжительность ожидания действий, чтобы получить разные результаты.
Вы можете играть с цветом рампе тоже (в редакторе частиц), чтобы достичь того же эффекта:
Или вы можете использовать particleColorSequence и SKKeyframeSequence для того, чтобы изменить цвет частиц в течение его срока службы. Надеюсь это поможет.
@sangony Я создал частицы, но я понятия не имею, как заставить их быть случайными цветами. Я долго смотрел онлайн и ничего не мог найти. – asdfg