2014-11-08 54 views
0

我建立一个游戏,我的重心是:如何每5秒增加一个NSNumber的值?

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

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

因为我是一个新手,我不能编码一个循环以便重力随时间变化,从而改变游戏的难度。如果我想让浮动变量gravityX每5秒增加0.5,应该实现的代码是什么。

我在使用FOR LOOP时面临的主要问题是在CONDITION中;我不知道如何让电脑了解游戏开始后的实际时间。

+0

[Spritekit - 创建计时器]的可能重复(http://stackoverflow.com/questions/23978209/spritekit-creating- a-timer) - 使用Sprite Kit提供的计时方法,**不要**使用NSTimer! – LearnCocos2D 2014-11-09 10:05:33

回答

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) 
}