2017-05-22 14 views
-1

그래서 두 개의 레이블 노드를 코드에 추가하고 다른 레이블 노드가 보이지 않을 때 숨기고 게임이 시작되면 그 반대의 경우를 원합니다.skLabelNodes 가끔만 작동합니다

class GameScene: SKScene { 
    // Declarations 
    let startLabel:SKLabelNode = SKLabelNode() 
    let scoreLabel:SKLabelNode = SKLabelNode() 
    var score = 0 

    override func didMoveToView(view: SKView) { 
     // Properties 
     startLabel.fontSize = 20 
     startLabel.fontColor = UIColor.blackColor() 
     startLabel.position = CGPointMake(self.frame.width*0.5, self.frame.height*0.5) 
     startLabel.text = "Touch Paddle To Begin" 
     startLabel.hidden = false 
     self.addChild(startLabel) 

     scoreLabel.fontSize = 20 
     scoreLabel.fontColor = UIColor.blackColor() 
     scoreLabel.position = CGPointMake(self.frame.width*0.5, self.frame.height*0.75) 
     scoreLabel.text = "\(score)" 
     scoreLabel.hidden = true 
     self.addChild(scoreLabel) 

그런 다음 패들이 터치되면 moveBall() 함수가 시작되고 게임이 시작됩니다. 여기가 내가 라벨을 바꿨다.

func moveBall() { 

    // Setting Labels 
    self.startLabel.hidden = true 
    self.scoreLabel.hidden = false 

    // Starting game 
    self.ball.physicsBody?.dynamic = true 

그러나 가끔씩 만 작동합니다. 그것은 완벽하게 작동 할 것이고, 아무 것도 바꾸지 않으면 다시 실행할 것이고 하나의 라벨 만 나타날 것입니다. 그런 다음 다시 한 번 다른 레이블이 표시되거나 시작 레이블이 프레임에 대해서만 표시되고 사라집니다.

면책 조항 : 코드 작성 방법을 모르겠다. 게임에 대한 아이디어를 얻었으며 실제로 실현하려고 노력 중입니다. 솔루션이 단순한 경우 사과드립니다. 또한 내 코드에 대한 조언을 주시면 감사하겠습니다. 감사!

+0

어디에서 moveBall()을 호출합니까? – Whirlwind

+0

레이블의 z 위치를 확인하고'GameViewController.swift'에서'ignoreSiblingOrder'가'false'로 설정된 경우 배경 이미지가있는 경우 라벨이 때로는 뒤에 그려지는지 궁금해? –

답변

0

주어진 정보에서 올바르게 작동해야합니다. 그러나 touchesBegan 메소드에서 moveBall()을 호출해야합니다. 업데이트 방법이 아닙니다.

또한 사용자가 labelNode를 터치하면 터치를 시작하여 터치 위치가 시작됩니다. (하지만 스프라이트 대신 레이블을 사용하고 싶습니다. coz 레이블은 반응이없는 비트 일 때도 있습니다.

정확한 방법으로 moveBall()을 호출하십시오. 더 정확한 답변