在我的游戏中,流星从天上掉下来。 spawnMeteorite
函数在游戏开始时被调用,并在满足延迟要求后才调用自身,在此延迟时间内,陨石之间的新延迟比以前略短。
func spawnMeteorite(timeInterval:Double) {
delay(timeInterval) {
self.spawnMeteorite(timeInterval: timeInterval*0.9)
}
// Create meteorites
}
func delay(_ delay:Double, closure:@escaping ()->()) {
let when = DispatchTime.now() + delay
DispatchQueue.main.asyncAfter(deadline: when, execute: closure)
}
我已经能够使用self.view?.isPaused = false
暂停GameScene中的所有动画。但是,由于代码本身仍在运行,所以流星继续产生。
是否有任何方法可以暂停程序中所有正在进行的延迟,以便如果游戏在3秒钟的延迟中途暂停,则在恢复播放后,延迟还会继续1.5秒吗?这意味着陨石产卵的速度不会被打断。谢谢。
答案 0 :(得分:1)
如果您属于SKScene类,请以SKAction的形式延迟场景。当您暂停/取消暂停视图或场景时,操作将暂停并继续。
func spawnMeteorite(timeInterval:Double) {
run(SKAction.wait(forDuration: timeInterval), completion: {
self.spawnMeteorite(timeInterval: timeInterval * 0.9)
})
print("Spawn Meteorite")
}