我有一个序列,我产生一个障碍,然后等待一段随机的时间,但如果我运行游戏,例如第一次随机延迟1.4秒,但它不仅仅是第一次延迟它'只是所有的时间1.4并且它没有变化(它不必是1.4它只是一个例子)。我试图创建一个具有随机返回值的函数,但它不起作用。我不知道我怎么能解决这个问题。这是我的具有随机返回值的函数的代码。如果它有助于obstSwitch()是创建障碍的函数:
func getRandomDelay() ->Double {
let randomNumber = arc4random_uniform(20) + 5
let randomDelay: Double = Double(randomNumber) / 10
print(randomDelay)
return randomDelay
}
并且继承了游戏开始时调用的功能:
func gameStarted() {
gameAbleToStart = false
moveLine()
scoreTimer()
let runObstSwitch = SKAction.run {
self.obstSwitch()
}
let wait = SKAction.wait(forDuration: getRandomDelay())
let sequence = SKAction.sequence([runObstSwitch, wait])
self.run(SKAction.repeatForever(sequence))
}
答案 0 :(得分:1)
let wait = SKAction.wait(forDuration: getRandomDelay())
let sequence = SKAction.sequence([runObstSwitch, wait])
创建一次wait
动作,然后在序列中使用
所以在runObstSwitch
之间花费了相同的空闲时间
动作。
如果您希望空闲时间可变,请使用
而是wait(forDuration:withRange:)
。例如
let wait = SKAction.wait(forDuration: 1.5, withRange: 2.0)
let sequence = SKAction.sequence([runObstSwitch, wait])
延迟将是1.5-2.0 / 2 = 0.5和1.5 + 2.0 / 2 = 2.5秒之间的随机数,每次执行都会有所不同。