spritekit: проблема с последовательностью ключевых кадров частиц

Это должно быть очень просто. Я пытаюсь, чтобы мои частицы исчезали, используя последовательность ключевых кадров... но когда я использую последовательность ключевых кадров, они вообще не исчезают. Не уверен, что я мог делать неправильно.

создание частиц:

static func debris(size: Int) -> Array<SKEmitterNode> {
    if size > 5 {
        fatalError("we don't have that much debris")
    }

    var debrisArr: [SKEmitterNode] = []

    for i in 1...size {
        let debris: SKEmitterNode = SKEmitterNode(fileNamed: "debris")
        debris.particleTexture = SKTexture(imageNamed: "debris\(i)")
        convertNumRef(&debris.particleScale)
        convertNumRef(&debris.particleScaleRange)
        debris.particleRotationSpeed = debris.particleRotationSpeed * CGFloat.randomSign()
        // THE PART WE CARE ABOUT
        debris.particleAlphaSequence = SKKeyframeSequence(keyframeValues: [0.5, 1.0, 0.0], times: [0.0, 3.0, 4.0])

        debrisArr.append(debris)
    }

здесь добавьте частицы в игровую сцену

func makeDebris(){
    for debrisEmitter in self.debris {
        debrisEmitter.resetSimulation()
        debrisEmitter.position = self.position
        self.gameScene.gameLayer.addChild(debrisEmitter)
        debrisEmitter.runAction(SKAction.removeFromParentAfterDelay(10))
    }
}

Я пробовал это и на более простом примере.

огонь - частица "огонь" спрайткита по умолчанию

let fire = SKEmitterNode(fileNamed: "MyParticle")
fire.particleColorSequence = SKKeyframeSequence(keyframeValues: [SKColor.blueColor(), SKColor.blueColor(), SKColor.yellowColor()], times: [0.0, 1.0, 2.0])
fire.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
self.addChild(fire)

эмиттер испускает только синие частицы. он просто выбирает первый цвет в массиве. Я должен что-то упустить.


person hamobi    schedule 15.12.2014    source источник


Ответы (1)


Хорошо, я неправильно понял. время не время в секундах. это доли продолжительности жизни вашей частицы

debris.particleLifetime = 8
debris.particleAlphaSequence = SKKeyframeSequence(keyframeValues: [1.0, 1.0, 0.0], times: [0.0, 0.7, 1.0])
person hamobi    schedule 15.12.2014
comment
Спасибо. Документация SpriteKit оставляет желать лучшего. - person Jonny; 20.01.2017