2017-06-01 73 views
1

我在sprite-kit和swift中编写了一个应用程序,当你触摸屏幕时,一个精灵(玩家)在另一个精灵向其移动时抛出一个子弹。如果玩家击中另一个精灵,则射弹和精灵消失。游戏的一个问题是,如果玩家迅速触摸屏幕,他可以轻松地在游戏中提高自己的分数。我怎样才能让代码只识别屏幕触摸每一个让我们说.3秒?过滤快速用户触摸输入

+0

请告诉我们你已经尝试过了。请参阅:[如何创建最小,完整且可验证的示例?](https://stackoverflow.com/help/mcve) – CodingNinja

回答

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 
    }