好吧,我正在構建一個精靈套件遊戲,我需要延遲敵人spawn func 反覆。Swift:隨機延遲只能在第一次使用?隨機數字func只執行一次?
我已經成功地生成使用此功能隨機Double
S:
func randomDelay()->Double {
var randLower : UInt32 = 1
var randUpper : UInt32 = 50
var randDelayTime = arc4random_uniform(randUpper - randLower) + randLower
var randDelayTimer = Double(randDelayTime)/10
//var randDelay = randDelayTimer * Double(NSEC_PER_SEC)
//var newTime = dispatch_time(DISPATCH_TIME_NOW, Int64(randDelay))
println(randDelayTimer)
return randDelayTimer
}
我知道這工作,因爲我打印出來randDelayTimer
幾次,它實際上生成隨機Double
秒。
這裏就是我反覆嘗試隨機延遲後產卵我的敵人:
runAction(SKAction.repeatActionForever(
SKAction.sequence([
SKAction.waitForDuration(NSTimeInterval(randomDelay())),
SKAction.runBlock({self.spawnEnemy1()})))
這工作,但只在第一次運行它。無論隨機Double
是由randomDelay()
生成的,第一次將該序列循環通過後應用於之後產生的每個敵人。例如,如果遊戲運行時,randomDelay()
= 3.5,3.5秒延遲將永久重複。
我知道randomDelay()
僅在第一次運行時也是因爲第一次後沒有任何內容被打印到控制檯。
我該如何解決這個問題?
我該如何使用它?你能提供一個在SKAction上使用它的例子嗎? – skyguy
我已更新我的答案:) – ABakerSmith
通過將範圍計算更改爲'let range = abs(max - min)',您可以避免有條件地交換這些值,因此使用常量參數。 – 0x141E