如何在时间延迟后生成对象 swift 3 spritekit
how to spawn objects after time delay swift 3 spritekit
我正在开发一款射击游戏。我想每 10 秒生成一个屏障,然后在 3 秒后删除它。我觉得有点像
let TimeBeforeAdd = DispatchTime.now() + 5
DispatchQueue.main.asyncAfter(deadline: TimeBeforeAdd) {
self.Barrier.position = self.barrierPos
self.addChild(self.Barrier)
self.barrierAdded = true
}
if barrierAdded == true {
let RemoveTime = DispatchTime.now() + 3
DispatchQueue.main.asyncAfter(deadline: RemoveTime) {
self.Barrier.removeFromParent()
self.barrierAdded = false
}
}
但是当它在 10 秒后运行时,我收到一条错误消息,说它添加了 "Barrier" 的多个实例,感谢您的帮助。
调度计时器的想法很酷。但是,有一种 更 更简单的方法!给你:
// Inside of your gamescene:
func spawnThingEveryTenSecondsThenDeleteAfterThree() {
func spawnShootyThing() { /* input your code here */ }
func despawnShootyThing() { /* input your code here */ }
let wait10 = SKAction.wait(forDuration: 10)
let wait3 = SKAction.wait(forDuration: 3)
let spawn = SKAction.run { spawnShootyThing() }
let despawn = SKAction.run { despawnShootyThing() }
let action = SKAction.sequence([wait10, spawn, wait3, despawn])
// If you don't want this action to run forever, then remove this action!
let forever = SKAction.repeatForever(action)
self.run(forever)
}
我正在开发一款射击游戏。我想每 10 秒生成一个屏障,然后在 3 秒后删除它。我觉得有点像
let TimeBeforeAdd = DispatchTime.now() + 5
DispatchQueue.main.asyncAfter(deadline: TimeBeforeAdd) {
self.Barrier.position = self.barrierPos
self.addChild(self.Barrier)
self.barrierAdded = true
}
if barrierAdded == true {
let RemoveTime = DispatchTime.now() + 3
DispatchQueue.main.asyncAfter(deadline: RemoveTime) {
self.Barrier.removeFromParent()
self.barrierAdded = false
}
}
但是当它在 10 秒后运行时,我收到一条错误消息,说它添加了 "Barrier" 的多个实例,感谢您的帮助。
调度计时器的想法很酷。但是,有一种 更 更简单的方法!给你:
// Inside of your gamescene:
func spawnThingEveryTenSecondsThenDeleteAfterThree() {
func spawnShootyThing() { /* input your code here */ }
func despawnShootyThing() { /* input your code here */ }
let wait10 = SKAction.wait(forDuration: 10)
let wait3 = SKAction.wait(forDuration: 3)
let spawn = SKAction.run { spawnShootyThing() }
let despawn = SKAction.run { despawnShootyThing() }
let action = SKAction.sequence([wait10, spawn, wait3, despawn])
// If you don't want this action to run forever, then remove this action!
let forever = SKAction.repeatForever(action)
self.run(forever)
}