如何每5秒增加一个NSNumber的值?

时间:2014-11-08 22:57:17

标签: objective-c sprite-kit

我正在建立一个重力为:

的游戏
self.physicsworld.gravity = CGVectorMake(gravityX , gravity-Y);

我想随着时间改变作用在精灵节点上的力。

因为我是新手,所以我无法对循环进行编码,以便重力随时间变化,从而改变游戏的难度。如果我希望浮点变量gravityX每5秒增加0.5,那么代码应该实现。

我在这里使用FOR LOOP面临的主要问题是在条件下;我不知道如何使计算机了解自游戏开始以来的实际时间。

1 个答案:

答案 0 :(得分:0)

这可以使用SKAction类来完成。将以下方法添加到SKScene子类中,并在需要重力开始增加时调用它。我已经包含了Objective-C和Swift版本。

目标-C:

- (void)startGravityIncrease {
    SKAction *blockAction = [SKAction runBlock:^{
        CGVector gravity = self.physicsWorld.gravity;
        gravity.dx += 0.5;
        self.physicsWorld.gravity = gravity;
    }];
    SKAction *waitAction = [SKAction waitForDuration:5];
    SKAction *sequenceAction = [SKAction sequence:@[waitAction, blockAction]];
    SKAction *repeatAction = [SKAction repeatActionForever:sequenceAction];

    [self runAction:repeatAction];
}

夫特:

func startGravityIncrease() {
    let blockAction = SKAction.runBlock { () -> Void in
        self.physicsWorld.gravity.dx += 0.5
    }
    let waitAction = SKAction.waitForDuration(5)
    let sequenceAction = SKAction.sequence([waitAction, blockAction])
    let repeatAction = SKAction.repeatActionForever(sequenceAction)

    self.runAction(repeatAction)
}