Establecer el nodo para generar aleatoriamente desde una matriz de puntos y caer a velocidades gradualmente más rápidas.

El resultado que estoy buscando es lograr : estoy buscando generar un nodo aleatoriamente desde 3 ubicaciones diferentes almacenadas en una matriz. Una vez engendrado, me gustaría que cayera el nodo. Gradualmente, con el time, quisiera que el nodo caiga a velocidades más rápidas.

Lo que tengo actualmente : El nodo engendra en una location establecida y cae como debería. El nodo actualmente no genera random y la velocidad a la que cae no aumenta. Tengo una matriz escrita, pero actualmente no funciona como debería.

Código actualizado :

var nodeDropTime:TimeInterval = 5 func fallingNodeAction(){ self.node = SKSpriteNode(imageNamed: "node 2") self.node.zPosition = 1 self.node.physicsBody = SKPhysicsBody(circleOfRadius: self.node.size.height / 10.0) self.node.physicsBody?.isDynamic = true self.node.physicsBody?.allowsRotation = false self.node.physicsBody?.affectedByGravity = true nodeDropTime -= 1 var nodePosition = Array<CGPoint>() nodePosition.append((CGPoint(x:400, y:475))) nodePosition.append((CGPoint(x:450, y:475))) nodePosition.append((CGPoint(x:500, y:475))) self.node.physicsBody?.categoryBitMask = ColliderType.nodeCategory self.node.physicsBody?.contactTestBitMask = ColliderType.boundary self.node.physicsBody?.collisionBitMask = 0 let shuffledLocations = GKRandomSource.shanetworkingRandom().arrayByShufflingObjects(in: nodePosition) as! [CGPoint] self.node.position = shuffledLocations[0] } fallingNodeAction() 

Para la location aleatoria, importe GameplayKit , por lo que puede usar arrayByShufflingObjectsInArray en la matriz de CGPoint s para luego elegir el primer elemento de la matriz como la location. El código:

 let shuffledLocations = GKRandomSource.shanetworkingRandom().arrayByShufflingObjects(in: nodePosition) as! [CGPoint] self.node.position = shuffledLocations[0]