Swift中SKAction中的随机持续时间

时间:2015-04-28 23:51:50

标签: 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.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))
}

1 个答案:

答案 0 :(得分:0)

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

该功能可能如下:

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))
}

如您所见,我在持续时间内使用randomTime参数:

startMoving(randomTime)

start() - 函数中的相同内容:

func start(randomTime:CGFloat)
相关问题