【问题标题】:SpriteKit how to repeat an SKAction after a VARYING random number of animation loops each time?SpriteKit如何在每次变化随机数的动画循环后重复SKAction?
【发布时间】:2015-12-02 19:51:29
【问题描述】:

我有一个带有纹理动画的 SKSpriteNode。我基本上有一个 4 帧的角色空闲周期和一个眨眼动画序列。我想永远循环角色空闲循环,但让它以随机间隔播放闪烁动画序列。

我有以下代码;

func playIdle() {

    let idle_loop = SKAction.repeatAction(action_textureSequence_idle!, count: randomLoopCount())    

    let sequence = SKAction.sequence([idle_loop, action_textureSequence_blink!])

    let repeatSequence = SKAction.repeatActionForever(sequence)

    runAction(repeatSequence)

}

func randomLoopCount() -> Int {

    return Int(arc4random_uniform(10) + 2)

}

上面的问题是,随机数只生成一次,所以眨眼根本不会随机发生。就在每次相同数量的循环之后。如何达到我想要的效果?

【问题讨论】:

    标签: ios animation sprite-kit tvos skaction


    【解决方案1】:

    你可以使用递归来实现你想要的:

    func playIdle() {
    
            let idle_loop = SKAction.repeatAction(action_textureSequence_idle, count: Int(arc4random_uniform(10) + 2))
    
            let sequence = SKAction.sequence([idle_loop,
                                                action_textureSequence_blink,
                                                SKAction.runBlock({[unowned self] in self.playIdle()})])
    
            runAction(sequence)
    
        }
    

    unowned self 部分可防止您创建 strong reference cycle

    【讨论】:

    • 你完全毁了它。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    相关资源
    最近更新 更多