Swift中SKAction的随机持续时间

Swift中SKAction的随机持续时间,swift,random,sprite-kit,Swift,Random,Sprite Kit,如何随机选择这两个对象的持续时间 func start() { let ajusdtedDuration = NSTimeInterval (frame.size.width / kDefaultXToMovePerSecond) let moveLeft = SKAction.moveByX(-frame.size.width/2, y: 0, duration: ajusdtedDuration/2) let resetPosition = SKAction.

如何随机选择这两个对象的持续时间

  func start() {

    let ajusdtedDuration = NSTimeInterval (frame.size.width / kDefaultXToMovePerSecond)

    let moveLeft = SKAction.moveByX(-frame.size.width/2, y: 0, duration: ajusdtedDuration/2)
    let resetPosition = SKAction.moveToX(0, duration: 0)
    let moveSequence = SKAction.sequence([moveLeft, resetPosition])

    runAction(SKAction.repeatActionForever(moveSequence))
}

func stop() {
removeAllActions()


}
这是另一个。另外,我如何使两者的持续时间同步

  func startMoving() {
let moveLeft = SKAction.moveByX(-kDefaultXToMovePerSecond, y: 0, duration: 1)
    runAction(SKAction.repeatActionForever(moveLeft))
}

您可以创建一个随机数并在持续时间内使用它

函数可以如下所示:

func randomBetweenNumbers(firstNum: CGFloat, secondNum: CGFloat) -> CGFloat{
    return CGFloat(arc4random()) / CGFloat(UINT32_MAX) * abs(firstNum - secondNum) + min(firstNum, secondNum)
}
要同步这两个动作,您不需要做太多。因为如果你在每个动作之后调用它们,它们将同时启动。只需调用该函数一次,并将其用于两个函数:

//Number between 0 and 10
let randomTime = randomBetweenNumbers(0, secondNum: 10)
func startMoving(randomTime: CGFloat) {
let moveLeft = SKAction.moveByX(-kDefaultXToMovePerSecond, y: 0, duration: randomTime)
    runAction(SKAction.repeatActionForever(moveLeft))
}
然后你用它。最好的方法是将其用作函数中的参数:

//Number between 0 and 10
let randomTime = randomBetweenNumbers(0, secondNum: 10)
func startMoving(randomTime: CGFloat) {
let moveLeft = SKAction.moveByX(-kDefaultXToMovePerSecond, y: 0, duration: randomTime)
    runAction(SKAction.repeatActionForever(moveLeft))
}
如您所见,我使用randomTime参数表示持续时间:

startMoving(randomTime)
在启动功能中也是如此:

func start(randomTime:CGFloat)
谢谢,我应该把let randomTime=randomBetweenNumber 0,secondNum:10放入func randomBetweenNumber中吗?因为,在我用括号写下这些之后,我得到了一个错误的额外参数“secondNum in”调用。另外,我能把min改为seconds吗?因为在我的游戏中,移动是按秒计算的,而不是按分钟计算的。