2014-12-13 164 views
-1

我有一个节点,我想随机值移动,做一些事情,然后再移动另一个随机值。这里是我的代码:SpriteKit - 随机移动

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

这会在0-3因此运不相同的位置范围内的值,但他们非常接近,所以你可能没有注意到的变化:

var randomSpace = CGFloat(arc4random_uniform(UInt32(randomValues.count))) 

我想你真正想要做的是生成一个随机指数,然后用随机指标得到randomValues之一:

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

作品但不完全,它不挑从我的阵列中的随机值,但它从来没有改变它。它随机选择的任何值都会成为固定值。我需要游戏中每次移动动作变化的价值。 – Abdou023 2014-12-13 15:30:54

+0

在这种情况下,您不能只重复一遍,您必须在序列末尾添加一个runBlock操作,以创建一个具有新随机位置的新序列。 – LearnCocos2D 2014-12-13 16:28:42