Чтобы стрелять непрерывно, все, что вам нужно сделать, это просто создать серию действий, которые будут повторяться при входе в состояние начала касания, и останавливать действия при отпускании касания
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if currentGameState == gameState.preGame {
gameStart()
}
else if currentGameState == gameState.inGame {
let fire = SKAction.run{self.fireBullet()}
let wait = SKAction.wait(forDuration:0.1) //delay between shots
let seq = SKAction.sequence([fire,wait])
let repeat = SKAction.repeatForever(seq)
planet.run(repeat, withKey:"bullets")
}
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
if currentGameState == gameState.preGame {
}
else if currentGameState == gameState.inGame {
planet.removeAction(forKey:"bullets")
}
}
Теперь вынужно будет обработать удаление действия при отмене касания.Вам также понадобится справиться, когда несколько пальцев нажимают на экран, потому что вы не хотите, чтобы ваше действие перезапускалось, когда это происходит.
В качестве примечания, я бы порекомендовал создать хороший кусок пуль.в начале вашего приложения, и просто продолжайте перерабатывать их, чтобы избежать постоянного создания новых пуль.