过滤快速用户触摸输入

时间:2017-06-01 18:39:28

标签: swift sprite-kit touch

我正在使用sprite-kit和swift编写应用程序,当你触摸屏幕时,一个精灵(玩家)会向另一个精灵投掷一个射弹。如果玩家击中另一个精灵,那么射弹和精灵就会消失。游戏的一个问题是,如果玩家快速触摸屏幕,他可以轻松地在游戏中提升他的分数。如何使代码只识别屏幕被触摸每个让我们说.3秒?

1 个答案:

答案 0 :(得分:1)

在SpriteKit / GameplayKit游戏中,您的大部分代码都在游戏循环中运行,您将不断地在当前时间内传递。这就是SKScene中的这个功能:

override public func update(_ currentTime: TimeInterval) {
}

在这里,跟踪时间和启用/禁用事物是很常见的。为了简单起见:

  1. 添加以下变量

    var firingEnabled = true
    var enableFiringAtTime: TimeInterval = 0
    var currentTime: TimeInterval = 0
    
  2. 当他们开火时,添加此代码

    if firingEnabled {
        firingEnabled = false
        enableFiringAtTime = self.currentTime + 0.3
        // your fire code here
    }
    
  3. 并在更新覆盖中

    self.currentTime = currentTime
    if currentTime > enableFiringAtTime {
        firingEnabled = true
    }