2015-10-14 24 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秒。您可以根据您的要求更改此计算。