Курс 3 урок 52 - Вопрос по selector


#1

Здравствуйте
В уроке мы создаем метод позволяющий нам стрелять лазером

func playerSpaceShipFire() {
   
    let redLaser = SKSpriteNode(imageNamed: "redLaser")
    redLaser.xScale = 0.8 
    redLaser.yScale = 0.8
    redLaser.zPosition = 1
    redLaser.position = CGPoint(x: spaceShipLayer.position.x, y: spaceShipLayer.position.y)
    let moveAction = SKAction.moveTo(y: self.frame.height + 30, duration: 1)
    let removeLaser = SKAction.removeFromParent()
    let laserSequance = SKAction.sequence([moveAction, removeLaser])
    redLaser.run(SKAction.repeatForever(laserSequance)) 
    addChild(redLaser)  
}

Далее в методе didMove(to view: SKView), в конце мы создаем таймер интервала

let laserTimer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: playerSpaceShipFire", userInfo: nil, repeats: true)

И именно из-за selector приложение падает при запуске, выдавая ошибку:

Thread 1: signal SIGABRT
libc++abi.dylib: terminating with uncaught exception of type NSException

Если закомментировать эту строку, то все работает, но лазера естественно нет.
Xcode предлагает изменить selector с начало на:

selector: Selector(“playerSpaceShipFire”)

а потом на:

selector: Selector((“playerSpaceShipFire”))

Результат тот же, подскажите в чем ошибка?


#2

Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(playerSpaceShipFire), userInfo: nil, repeats: true)

@objc func playerSpaceShipFire() {
}

#3

Спасибо тебе, добрый человек :+1: