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