【问题标题】:Filtering Fast User Touch Input过滤快速用户触摸输入
【发布时间】:2017-06-02 06:28:23
【问题描述】:

我正在使用 sprite-kit 和 swift 编写一个应用程序,当您触摸屏幕时,一个精灵(玩家)会向另一个朝它移动的精灵投掷弹丸。如果玩家击中另一个精灵,那么弹丸和精灵就会消失。游戏的一个问题是,如果玩家快速触摸屏幕,他可以在游戏中轻松提高得分。如何让代码仅识别每 0.3 秒触摸一次屏幕?

【问题讨论】:

标签: swift sprite-kit touch


【解决方案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
    }
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    相关资源
    最近更新 更多