2014-11-08 30 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) 
}