将节点设置为从点阵列中随机生成并以逐渐更快的速度下降

时间:2016-08-17 18:55:55

标签: ios arrays swift sprite-kit swift3

我希望实现的结果:我希望从存储在数组中的3个不同位置随机生成一个节点。一旦产生,我希望节点下降。随着时间的推移,我希望节点以更快的速度下降。

我目前拥有的东西:该节点在设定的位置产生并且应该像它应该的那样掉落。节点当前不会随机生成,并且它的下降速度不会增加。我写了一个数组,但它目前没有按照它应该的方式运行。

更新了代码

 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.sharedRandom().arrayByShufflingObjects(in: nodePosition) as! [CGPoint]

        self.node.position = shuffledLocations[0]

    }

    fallingNodeAction()

1 个答案:

答案 0 :(得分:1)

对于随机位置,请导入 GameplayKit,因此您可以在arrayByShufflingObjectsInArray数组上使用CGPoint,然后选择数组中的第一项作为位置。代码:

let shuffledLocations = GKRandomSource.sharedRandom().arrayByShufflingObjects(in: nodePosition) as! [CGPoint]

self.node.position = shuffledLocations[0]