簡體   English   中英

如何隨機化repeatAction計數?

[英]How do I randomise a repeatAction count?

我有一個永遠重復的SKAction,它會在wave中釋放一個隨機數量的對象但是我似乎無法在SKAction.repeatActionForver中重復每次重復SKAction.repeatAction的計數。 有人知道我的問題的解決方案嗎?

let objectSet = SKAction.repeatAction(SKAction.sequence([addObject,objectDelay]),count: random value ))

let setDelay = SKAction.waitForDuration(2.0, withRange: 1.0)

let objectDelay = SKAction.waitForDuration(0.6, withRange: 0.4)

let objectSet = SKAction.repeatAction(SKAction.sequence([addObject, objectDelay]), count: *Trying to get a random value*))

objectLayerNode.runAction(SKAction.repeatActionForever(SKAction.sequence([objectSet, setDelay])))

謝謝

您可以使用let random = Int(arc4random_uniform(UPPER_BOUND))

然后

let objectSet = SKAction.repeatAction(SKAction.sequence([addObject, objectDelay]), count: random))

您還可以執行具有上限和下限的范圍。

let random = LOWER_BOUND + arc4random_uniform(UPPER_BOUND - LOWER_BOUND + 1)

編輯

你可以使用遞歸。 參考

let setDelay = SKAction.waitForDuration(2.0, withRange: 1.0)
let objectDelay = SKAction.waitForDuration(0.6, withRange: 0.4)

func repeat() {

    let random = LOWER_BOUND + arc4random_uniform(UPPER_BOUND - LOWER_BOUND + 1)

    let objectSet = SKAction.repeatAction(SKAction.sequence([addObject, objectDelay]), count: random))

    let sequence = SKAction.sequence([
        objectSet, objectDelay,SKAction.runBlock({
            [unowned self] in self.repeat()
        })
    ])

    objectLayerNode.runAction(sequence)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM