即使游戏没有结束,我也"You Lose"游戏场景的更新方法中



我无法理解我的逻辑出了什么问题。它似乎一切正常,直到我用几种方法对应用程序进行了一些更改,以发现移动得太快。

我在游戏开始后的几秒钟内得到一个"你输了",计数上升。敌人还没有碰到我的精灵节点,但它还是输了。在过去的 24 小时内,我正在打破我的头来解决这个问题。

代码类似于Ray Wenderlich Zombie Conga

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)
    }

Srikanth19,

我注意到上面给定的代码中有 2 个不同的变量 gameOver 和 game0ver。这是将问题粘贴到此处时的问题,还是您定义了 2 个不同的变量?

如果您没有定义 2 个不同的变量,那么理想情况下应该会出现编译时错误。

注意:如果您没有收到编译时错误,那么您很有可能在 2 个实例中将其声明为复制粘贴错误。

在声明中检查:var game0ver: bool!

在代码的其他部分(假设您使用了 Ray Wenderlich 的僵尸康加代码),您可能使用了正确的变量,它给出了var gameover: bool!

我尝试过僵尸康加,也参考了代码,你的条件进入的一个原因是因为 if 条件变量中的值错误......

请分享您的声明部分,或者让我知道您是否能够通过检查game0ver(和/或gameOver)中的值来解决此问题

如果您的变量livesgame0ver在您的类中定义(这就是它的样子),请使用它们的 didSet 钩子在更改时获得通知。这样,您可以设置断点并查看调用方,即:

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

最终,您可以看到lives何时更改,并在游戏中"意外"设置时跟踪该点。

相关内容

  • 没有找到相关文章

最新更新