【发布时间】:2017-06-02 06:28:23
【问题描述】:
我正在使用 sprite-kit 和 swift 编写一个应用程序,当您触摸屏幕时,一个精灵(玩家)会向另一个朝它移动的精灵投掷弹丸。如果玩家击中另一个精灵,那么弹丸和精灵就会消失。游戏的一个问题是,如果玩家快速触摸屏幕,他可以在游戏中轻松提高得分。如何让代码仅识别每 0.3 秒触摸一次屏幕?
【问题讨论】:
标签: swift sprite-kit touch
我正在使用 sprite-kit 和 swift 编写一个应用程序,当您触摸屏幕时,一个精灵(玩家)会向另一个朝它移动的精灵投掷弹丸。如果玩家击中另一个精灵,那么弹丸和精灵就会消失。游戏的一个问题是,如果玩家快速触摸屏幕,他可以在游戏中轻松提高得分。如何让代码仅识别每 0.3 秒触摸一次屏幕?
【问题讨论】:
标签: swift sprite-kit touch
在 SpriteKit/GameplayKit 游戏中,您的大部分代码都在一个游戏循环中运行,您不断地被当前时间传递。这就是 SKScene 中的这个函数的含义:
override public func update(_ currentTime: TimeInterval) {
}
在这里,跟踪时间和启用/禁用事物是很常见的。为简单起见:
添加以下变量
var firingEnabled = true
var enableFiringAtTime: TimeInterval = 0
var currentTime: TimeInterval = 0
当它们触发时,添加此代码
if firingEnabled {
firingEnabled = false
enableFiringAtTime = self.currentTime + 0.3
// your fire code here
}
并且在更新覆盖
self.currentTime = currentTime
if currentTime > enableFiringAtTime {
firingEnabled = true
}
【讨论】: