2015-10-14 26 views
1

我有一個計時器,每秒鐘產生另一個敵人。我希望它能夠基於用戶在產生新敵人之間的時間減少的分數。基本上,分數越高,敵人越多。這是我當前的計時器代碼。如何減少Swiftkit中創建更多敵人的時間?

EnemyTimer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("enemies"), userInfo: nil, repeats: true) 
+0

我嘗試過使用var speeds = 0等,但我得到一個錯誤說,無法將類型'Int'的值轉換爲期望的參數類型'NSTimeInterval'(又名'Double')。非常感謝 – jhamer123

+0

'var speed:Double = 0' –

+0

@ jhamer123閱讀本文http://stackoverflow.com/a/23978854/3402095它可以爲您節省一些未來的問題。如果您想知道可以遇到哪些問題,請查看以下內容:http://stackoverflow.com/q/33052867/3402095 – Whirlwind

回答

0

所有你需要做的是確保你使用2個或更多小數位數,例如:你想它產卵快於1秒鐘,這樣..

let newSpeed = 0.75 
EnemyTimer = NSTimer.scheduledTimerWithTimeInterval(newSpeed, target: self, selector: Selector("enemies"), userInfo: nil, repeats: true) 

這會讓他們每次產卵。 75秒。只要確保你使用整數1.0你不只是1否則你會得到錯誤無法將'Int'類型的值轉換爲期望的參數類型'NSTimeInterval'(又名'Double')

0

而不是計時器,你可以使用SKScene的更新功能以可變間隔產生敵人。例如

var previousTime : NSTimeInterval = -1 
let score = 100 


func spawnEnemy() { 
    print("Spawning Enemy") 
} 

override func update(currentTime: NSTimeInterval) { 

    var spawnTimeInterval : NSTimeInterval = 1 - (NSTimeInterval(score)/1000) 

    let minSpawnTime : NSTimeInterval = 0.1 

    if spawnTimeInterval < minSpawnTime { 
     spawnTimeInterval = minSpawnTime 
    } 


    if previousTime != -1 { 

     let elapsedTimeInterval = currentTime - previousTime 
     if elapsedTimeInterval > spawnTimeInterval { 

      spawnEnemy() 
      previousTime = currentTime 
     } 

    } else { 
     previousTime = currentTime; 
    } 

} 

在上面的代碼中,每100點將從spawnTimeInterval減少0.1秒。您可以根據您的要求更改此計算。