Я делаю небольшую игру, в которой есть космический корабль, и вы можете запустить пулю, когда я запускаю программу и нажимаю, чтобы запустить пулю, она работает, однако, когда я нажимаю снова, она не срабатывает.Это дает мне
Thread 1: signal SIGABRT
, когда я пытаюсь выстрелить во второй раз.Может ли кто-нибудь помочь мне?
Вот код:
import SpriteKit
import GameplayKit
import UIKit
class GameScene: SKScene {
let player = SKSpriteNode(imageNamed: "mySpaceship")
//let stars = SKSpriteNode(imageNamed: "stars")
let bullet = SKSpriteNode(imageNamed: "bullet")
override func didMove(to view: SKView) {
//print(frame.size.width)
//print(frame.size.height)
/*stars.position = CGPoint(x: self.size.width/2, y:self.size.height/2)
addChild(stars)*/
player.position = CGPoint(x:0, y:0)
player.zPosition = 2
self.addChild(player)
}
func fireBullet() {
bullet.position = player.position
bullet.zPosition = 1
self.addChild(bullet)
let moveBullet = SKAction.moveTo(y: self.size.height + bullet.size.height, duration: 1)
let deleteBullet = SKAction.removeFromParent()
let bulletSequence = SKAction.sequence([moveBullet, deleteBullet])
bullet.run(bulletSequence)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("Fired bullet")
fireBullet()
}
override func update(_ currentTime: TimeInterval) {
}
}
Весь этот код находится в моем файле GameScene.swift.Спасибо!
ОБНОВЛЕНИЕ: Посмотрев на счетчик узлов, я заметил, что если я запустил пулю после того, как предыдущая пуля была удалена (общее количество узлов равно 2), пуля будет стрелять нормально.Однако если я выстрелю пулю до того, как предыдущая пуля была удалена (что делает число узлов 2), программа вылетит.Есть ли способ выстрелить еще одну пулю, не дожидаясь удаления предыдущей пули?