2017-05-12 7 views
2

GameScene과 별개의 파일 인 Laser.swift에 shootLaser 함수가 있습니다. 탭 제스처 인식기를 사용하여 레이저를 발사하려고하는데 구문에 문제가 있습니다.제스처 인식기의 선택기를 사용하여 GameScene의 다른 클래스에있는 SpriteKit 함수 호출

Laser.swift의 기능은 다음과 같습니다

func shootLaser(_ sender: UITapGestureRecognizer, parentNode: SKNode, spriteNode: SKSpriteNode) { 

    let laser = SKSpriteNode(imageNamed: "laserBlast") 
    parentNode.addChild(laser) 

    laser.position = CGPoint(x: spriteNode.position.x, y: spriteNode.position.y) 

} 

GameScene의 코드는 뭔가 같은 ... 표현의 목록에

이것은 오류가 발생
class GameScene { 

    let tapRecognizer = UITapGestureRecognizer() 
    var laser = Laser() 

    override func didMove(to view: SKView) { 
    tapRecognizer.addTarget(self, action: #selector(GemScene.laser.shootLaser(_: , parentNode: self, spriteNode: main))) 
} 

, "예상 표현 "하지만 표현은 모두 거기에 있습니다 ... 그렇지 않습니까?

답변

2

제스처 인식기에 대해 별도의 기능을 만들면 어떨까요?

override func didMove(to view: SKView) { 
    tapRecognizer.addTarget(self, action: #selector(tapRecognized)) 
} 

func tapRecognized() { 
    laser.shootLaser(parentNode: self, spriteNode: main) 
} 

이 또한 제스처 인식기를 전달하도록 요구하지 않음으로써 shootLaser 방법을 단순화합니다.

+0

훨씬 쉽습니다. 감사합니다. 호기심에서, 원래 의도대로 어디서 잘못되었는지 알 수 있습니까? – squarehippo10