Random SpriteKit-随机运动

Random SpriteKit-随机运动,random,sprite-kit,skaction,Random,Sprite Kit,Skaction,我有一个节点,我想按随机值移动,做点什么,然后再按另一个随机值移动。这是我的密码: var randomValues = [250, 300, 90, 130] var randomSpace = CGFloat(arc4random_uniform(UInt32(randomValues.count))) var move = SKAction.moveByX(randomSpace, y: 0, duration: 2) myNode.runAction

我有一个节点,我想按随机值移动,做点什么,然后再按另一个随机值移动。这是我的密码:

    var randomValues = [250, 300, 90, 130]

    var randomSpace = CGFloat(arc4random_uniform(UInt32(randomValues.count)))
    var move =  SKAction.moveByX(randomSpace, y: 0, duration: 2)

    myNode.runAction(SKAction.repeatActionForever(SKAction.sequence([move, doSomething])))
当我键入一个固定的CGFloat值时,它工作正常,但它是固定的(显然),但当我告诉它按
randomSpace
移动时,它不移动,它只是在同一个位置执行所有操作


如何使其每次以随机值移动?

这会创建一个0到3范围内的值,因此移动不会到同一位置,但它们非常靠近,因此您可能没有注意到变化:

var randomSpace = CGFloat(arc4random_uniform(UInt32(randomValues.count)))
我认为您实际上想要做的是生成一个随机索引,然后使用随机索引获取其中一个随机值:

var randomIndex = CGFloat(arc4random_uniform(UInt32(randomValues.count)))
var randomSpace = randomValues[randomIndex]

它可以工作但不完全,它确实从我的数组中拾取了一个随机值,但它从不更改它。它随机选择的任何值都将成为固定值。我需要移动动作的值在游戏中每次都改变。在这种情况下,你不能永远重复,你必须在序列的末尾添加一个runBlock动作,创建一个带有新随机位置的新序列。