didBeginContact没有调用GameOver场景。是否需要添加某些内容?

时间:2016-01-20 19:15:27

标签: swift sprite-kit

我的屏幕右侧有不同颜色的条形图,其他颜色相同的条形图从左侧随机生成,与右边的静态条形图相匹配。当匹配的颜色碰撞时,它们会增加我的分数标签并从场景中完全删除,但是当错误的匹配时,没有任何反应。我甚至设置了print("")语句并且没有被调用。这是我的didBeginContact代码:

func didBeginContact(contact: SKPhysicsContact) {

  if let firstBody = ((contact.bodyA.categoryBitMask <= contact.bodyB.categoryBitMask) ? contact.bodyA.node : contact.bodyB.node) as! SKSpriteNode? {

     if let secondBody = ((contact.bodyA.categoryBitMask <= contact.bodyB.categoryBitMask) ? contact.bodyB.node : contact.bodyA.node) as! SKSpriteNode? {

        if firstBody.color == secondBody.color {
           label.text = "\(points)"
           points++

           firstBody.removeFromParent()


        }
        if firstBody.color != secondBody.color { 
           gameEnd()
           print("didn't match")

        }
     }
  }

1 个答案:

答案 0 :(得分:0)

你的代码似乎是一个无组织的混乱,试一试:

       func didBeginContact(contact: SKPhysicsContact) {

            if let firstBody = ((contact.bodyA.categoryBitMask <= contact.bodyB.categoryBitMask) ? contact.bodyA.node : contact.bodyB.node) as! SKSpriteNode?,  secondBody = ((contact.bodyA.categoryBitMask <= contact.bodyB.categoryBitMask) ? contact.bodyB.node : contact.bodyA.node) as! SKSpriteNode? {

              if firstBody.color == secondBody.color {
                 label.text = "\(points)"
                 points++
                 firstBody.removeFromParent()
              }
              else{ 
                  print("didn't match")
                  gameEnd()
             }
         }
     }