我有一个计时器,每秒钟产生另一个敌人。我希望它能够基于用户在产生新敌人之间的时间减少的分数。基本上,分数越高,敌人越多。这是我当前的计时器代码。如何减少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