2015-01-15 1 views
1

내 논리에 어떤 문제가 있는지 이해할 수 없습니다. 너무 빠르게 움직이는 거북이를 발견하기 위해 몇 가지 방법으로 앱을 약간 변경하기 전까지는 문제가없는 것으로 보였습니다.게임이 끝나지 않아도 "You Lose"가 나옵니다. GameScene의 업데이트 방법

게임이 시작된 후 몇 초 이내에 "You Lose"가 표시되고 카운트가 올라갑니다. 적들은 내 spritenode을 만지지 havent 여전히 그것을 잃게됩니다. 이 문제를 해결하기 위해 지난 24 시간 동안 내 머리를 아프게하고 있습니다. 당신의 변수 livesgame0ver이 때 알림을받을하기 위해 (즉,이처럼 보이는 방법), 자신의 didSet 후크를 사용하는 클래스에 정의 된 경우

코드 레이 Wenderlich 좀비 콩가

override func update(currentTime: CFTimeInterval) { 
    /* Called before each frame is rendered */ 
    if lastUpdatedtime > 0 { 
     dt = currentTime - lastUpdatedtime 
    } else { 
    dt = 0 
    } 
    lastUpdatedtime = currentTime 
    //println("\(dt*1000) milliseconds since last update") 

    //Tartuga.position = CGPoint(x: Tartuga.position.x + 4 , y: Tartuga.position.y) 


    boundsCheckTartuga() 

    rotateSprite(Tartuga, direction: CGPoint(x:22, y: 300),rotationRadiansPerSdec: 3) 


    //stopTartuga() 
    mandateFall() 


    if lives <= 0 && !game0ver { 
     gameOver = true 
     println("you lose!") 

     let reveal = SKTransition.flipHorizontalWithDuration(0.5) 

    } 
+1

'lives'와 'game0ver'의 값을 어디에서든지 변경할 수 있습니다. 어딘가에 '생명'이 0이되거나 음수가되고'준준결승 '이 거짓이다. – rmaddy

+0

업데이트가 언제 생기는지 확인할 수 있습니다. 그 전화 번호와 전화 번호를 확인하십시오. 분명히 그것은 조건문에 대한 요구 사항이므로, gameOver를 다른 위치로 설정하지 않으면 그 원인이 될 것이라고 생각합니다. – TheCodingArt

답변

0

Srikanth19, 나는 위의 주어진 코드에서 2 개의 다른 변수 gameOver 및 game0ver을 나타 납니까

. 여기에 질문을 붙여 넣거나 2 가지 변수를 정의 할 때 문제가 있습니까?

2 개의 다른 변수를 정의하지 않은 경우에는 컴파일 타임 오류가 발생하는 것이 이상적입니다.

참고 : 컴파일 시간 오류가 발생하지 않으면 2 개의 인스턴스에서 복사 붙여 넣기 오류로 선언되었을 가능성이 큽니다.

선언문에서 확인하십시오 : var game0ver : Bool!

및 코드의 다른 섹션 (올바른 코드를 사용했다고 가정 할 때 Zimbie Conga 코드가 사용됨)에서 올바른 변수를 사용하면 var gameOver : Bool!

나는

당신의 선언 섹션을 공유하거나 알려 주시기 바랍니다 .... 좀비 콩가을 시도하고 또한 코드 함과 조건에서 점점 하나의 이유 때문에 만약 조건 변수에 잘못된 가치가있다 game0ver (및/또는 gameOver)의 값을 확인하여이 문제를 해결할 수 있다면

+1

내 코드에서 오류를 빠르게 발견해 주셔서 감사합니다. 이 문제가 해결되었습니다. 2 개의 변수가 있었는데, 그 중 하나는 참이었고 다른 하나는이 혼란을 야기한 거짓이었습니다. –

0

유사하다 그들은 변경됩니다. 그런 식으로, 당신은 중단 점을 설정하고 또한 발신자를 볼 수있다, 즉 : 결국

var lives : Int { didSet { println("lives changed to: \(lives)") } } 

당신이 lives가 변경 될 때마다 볼이 "사고"로 설정하면 게임에 지점을 추적 할 수 있습니다.

관련 문제