2015-01-15 17 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发生变化,当它被设置为“意外”追查点在你的游戏。

相关问题