我正试图打开一扇门,等待一段随机时间(在一定范围内),然后关闭。如果我使用SKAction.waitForDuration,我可以设置等待的确切时间,这是有效的。但是,如果我使用SKAction.waitForDuration(withRange),它总是在该范围内的最短时间打开。如何在该范围内的其他时间打开它?任何帮助将不胜感激!谢谢!
这是我的代码:
var doorAction = SKAction.moveTo(CGPoint(x: size.width * 0.5, y: size.height + size.height * 1.95), duration: NSTimeInterval(1))
// randomWait should give me a value between 10 & 30, but door always opens at 10
var randomWait = SKAction.waitForDuration(20.0, withRange: 20.0)
// waitAction works fine, but I want a value between 10 and 30
// var waitAction = SKAction.waitForDuration(10)
var doorReturnAction = SKAction.moveTo(CGPoint(x: size.width * 0.5, y: size.height * 2.18), duration: NSTimeInterval(1))
var actionSequence = SKAction.sequence([doorAction, randomWait, doorReturnAction])
self.runAction(actionSequence)
答案 0 :(得分:1)
由于您没有重复动作序列,因此您并不需要SKAction.waitForDuration:withRange:
。您可以使用arc4random()
let upperlimit : UInt32 = 30
let lowerlimit : UInt32 = 10
let waitDuration = NSTimeInterval(CGFloat(arc4random() % ((upperlimit - lowerlimit) * 10) + lowerlimit * 10)/10.0)
var randomWait = SKAction.waitForDuration(waitDuration)
答案 1 :(得分:0)
来自文档。
秒 - 等待的平均时间。
durationRange - 持续时间的可能值范围。
如果将20设置为平均值,并且范围仅达到20,那么唯一可以满足的方法是始终打开20.您应该尝试将第一个参数(平均值)设置为接近于如果你希望行为不那么统一,那么范围的中间。