我如何一次只在屏幕上允许一个SKSpriteNode实例?

时间:2017-08-25 16:50:28

标签: ios swift sprite-kit

这是我的第一篇文章 - 我搜索了很长时间,但找不到答案。

我正在与SpriteKit进行游戏,并且希望玩家能够一次只发射一枚炸弹 - 即在前一枚炸弹爆炸或离开屏幕之前它们无法再次发射。目前,当玩家点击屏幕时,他们可以发射任意数量的炸弹。

非常感谢任何帮助!

谢谢, 伊恩

2 个答案:

答案 0 :(得分:1)

为您的错误创建一个SKSpriteNode属性。 为导弹的移动创建一个SKAction,并为操作提供一个键,以便您可以通过名称来引用它。 按下开火按钮后,检查指定的操作是否已在运行;如果是,则什么也不做,否则运行'fireMissile'动作。

答案 1 :(得分:1)

史蒂夫的想法很好,比我的好,但这里有一个更新手友好的解释IMO ......把它放在你的游戏中:)

var canFireMissile = true

func fireMissile() {
  guard canFireMissile else { return }

  canFireMissile = false   // So you can't fire anymore missiles until 0.5secs later

  let wait     = SKAction.wait(forDuration: 0.5) // the duration of the missile animation (example)
  let reset    = SKAction.run { canFireMissile = true } // lets us refire the missile
  let sequence = SKAction.sequence([wait, reset])
  run(sequence)
}

override func mouseDown(with event: NSEvent) { // touchesBegan on iOS
  fireMissile()
}
相关问题