如何在时间延迟后生成对象 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)
}