SpriteKit如何在每次随机数目的动画循环后重复SKAction



我有一个带有纹理动画的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)
}

双簧管的问题是,随机数只生成一次,所以眨眼根本不会随机发生。每次循环次数刚好相同。我如何达到我想要的效果?

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

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)
    }

无主零件自身保护您不创建强参考循环。

相关内容

  • 没有找到相关文章

最新更新