我有一個計時器,每秒鐘產生另一個敵人。我希望它能夠基於用戶在產生新敵人之間的時間減少的分數。基本上,分數越高,敵人越多。這是我當前的計時器代碼。如何減少Swiftkit中創建更多敵人的時間?
EnemyTimer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("enemies"), userInfo: nil, repeats: true)
我有一個計時器,每秒鐘產生另一個敵人。我希望它能夠基於用戶在產生新敵人之間的時間減少的分數。基本上,分數越高,敵人越多。這是我當前的計時器代碼。如何減少Swiftkit中創建更多敵人的時間?
EnemyTimer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("enemies"), userInfo: nil, repeats: true)
所有你需要做的是確保你使用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')
而不是計時器,你可以使用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秒。您可以根據您的要求更改此計算。
我嘗試過使用var speeds = 0等,但我得到一個錯誤說,無法將類型'Int'的值轉換爲期望的參數類型'NSTimeInterval'(又名'Double')。非常感謝 – jhamer123
'var speed:Double = 0' –
@ jhamer123閱讀本文http://stackoverflow.com/a/23978854/3402095它可以爲您節省一些未來的問題。如果您想知道可以遇到哪些問題,請查看以下內容:http://stackoverflow.com/q/33052867/3402095 – Whirlwind