2015-01-15 16 views
1

我無法理解我的邏輯有什麼問題。它似乎工作得很好,直到我用幾種方法對應用程序進行了一些更改,以發現烏龜移動得太快。即使GameScene的Update方法沒有結束,我也會得到「You Lose」

我在遊戲開始後的幾秒鐘內收到「You Lose」,計數增加。敵人還沒有碰到我的精靈,它仍然失去了。我在過去的24小時內打破了我的頭來解決這個問題。

的代碼類似於雷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或負值,「givever」是錯誤的。 – rmaddy 2015-01-15 17:52:01

+0

您可能想要檢查您的更新時間。檢查多久調用一次以及爲什麼。顯然這是對條件語句的要求,所以我猜這就是原因,除非你在其他地方設置了gameOver。 – TheCodingArt 2015-01-15 17:54:00

回答

0

Srikanth19,

我注意到上面的代碼給出2種不同的變量GAMEOVER和game0ver。 在這裏粘貼問題或者是否定義了兩個不同的變量時,這是一個問題嗎?

如果你還沒有定義2個不同的變量,那麼你應該得到一個編譯時錯誤。

注意: 如果您沒有收到編譯時錯誤,那麼您很可能會在2個實例中聲明它爲複製粘貼錯誤。

在聲明中檢查: var game0ver:Bool!

和你的代碼的其他部分(假設你使用的是來自Ray Wenderlich的Zombie Conga代碼),你可能使用了正確的變量,它給了 var gameOver:Bool!

我試圖殭屍康加和也稱爲代碼和一個原因,你的狀況越來越在是因爲,如果條件變量的值不正確的....

請分享您的聲明部分或讓我知道如果您能夠通過檢查game0ver(和/或gameOver)中的值來解決此問題,請點擊這裏

+1

感謝您迅速注意到我的代碼中的錯誤。這解決了我的問題。有兩個變量,其中一個是真的,另外一個是虛假的,導致了這種混淆。 – 2015-01-16 19:50:52

0

如果,你的變量livesgame0ver在你的類中定義(這是它的樣子),用自己的didSet鉤得到通知,當他們被改變。這樣一來,你可以設置一個斷點,也看到來電,即:

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

最終,你可以看到,每當lives發生變化,當它被設置爲「意外」追查點在你的遊戲。

相關問題