2015-05-04 75 views
0
var timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: Selector("spawnredbarrier"), userInfo: nil, repeats: true) 


} 

    func spawnredbarrier(){ 


     var barrier = SKSpriteNode(imageNamed: "redobstacle.png") 

     barrier.position = CGPointMake(515, 0) 
     let actionn = SKAction.moveToY(self.size.height, duration: 6) 
     barrier.runAction(SKAction.repeatActionForever(actionn)) 

     self.addChild(barrier) 

     var bluebarrier = SKSpriteNode(imageNamed: "blueobstacle.png") 

     bluebarrier.position = CGPointMake(515, 0) 
     let action = SKAction.moveToY(self.size.height, duration: 6) 
     bluebarrier.runAction(SKAction.repeatActionForever(action)) 

     self.addChild(bluebarrier) 

     var greenbarrier = SKSpriteNode(imageNamed: "greenobstacle.png") 

     greenbarrier.position = CGPointMake(515, 0) 
     let actionnn = SKAction.moveToY(self.size.height, duration: 6) 
     greenbarrier.runAction(SKAction.repeatActionForever(actionnn)) 

     self.addChild(greenbarrier) 



    } 

我希望定時器用於spawnbarriers選擇一個隨機的障礙,其行爲每2秒選擇一個隨機的障礙

我怎麼能做出這個動作隨機

,也是我怎樣才能使該持續時間是6,以特定的速度增加

回答

2

第一個問題:要在Swift中得到一個隨機數,您可以使用此SO question的任何答案。我會選擇this one爲清楚:

此方法將產生給定的最小值和最大值

之間的隨機int值
func randomInt(min: Int, max:Int) -> Int { 
    return min + Int(arc4random_uniform(UInt32(max - min + 1))) 
} 

一旦你有了這個,只需創建一個簡單的開關語句:

let r = randomInt(0, 2) 
switch r{ 
case 0: self.addChild(barrier) 
case 1: self.addChild(bluebarrier) 
case 2: self.addChild(greenbarrier) 
default: println("Other") 
} 

你的功能將類似於:

func spawnredbarrier(){ 
     var barrier = SKSpriteNode(imageNamed: "redobstacle.png") 

     barrier.position = CGPointMake(515, 0) 
     let actionn = SKAction.moveToY(self.size.height, duration: 6) 
     barrier.runAction(SKAction.repeatActionForever(actionn)) 

     var bluebarrier = SKSpriteNode(imageNamed: "blueobstacle.png") 

     bluebarrier.position = CGPointMake(515, 0) 
     let action = SKAction.moveToY(self.size.height, duration: 6) 
     bluebarrier.runAction(SKAction.repeatActionForever(action)) 

     var greenbarrier = SKSpriteNode(imageNamed: "greenobstacle.png") 

     greenbarrier.position = CGPointMake(515, 0) 
     let actionnn = SKAction.moveToY(self.size.height, duration: 6) 
     greenbarrier.runAction(SKAction.repeatActionForever(actionnn)) 

     let r = randomInt(0, 2) 
     switch r{ 
     case 0: self.addChild(barrier) 
     case 1: self.addChild(bluebarrier) 
     case 2: self.addChild(greenbarrier) 
     default: println("Other") 
     } 
} 

第二個問題:您需要一個Timer(您已經知道如何觸發一個,只需創建另一個),並且在目標方法中只需增加一個iVar來保存費率值。使用該伊娃,而不是硬編碼6

更新

定義在類級別的實例變量,那麼功能調整IVAR的值(你需要檢查發生了什麼,當n達到0) 。添加一個定時器,調用此功能,並使用n而不是硬編碼6

var n: Int = 6 

function adjustIVar() { 
    self.n-- 
} 
+0

你如何使用伊維爾請我看起來這樣做? –

+0

我想讓6的值降下來 –

+0

已更新的答案! –