swift - didBeginContact 未调用 GameOver 场景。有什么需要补充的吗?

标签 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")

        }
     }
  }

最佳答案

你的代码似乎是一团乱七八糟的东西,试一试:

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

关于swift - didBeginContact 未调用 GameOver 场景。有什么需要补充的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34908540/

相关文章:

ios - 字典中的字符串值是字符串的两倍

swift - 如何制作只显示 20% 时间的插页式广告?

sprite-kit - colorizeWithColor 和 SKLabelNode

Swift:使相同颜色的半透明重叠线相交时不改变颜色

Swift Spritekit 背景图像

ios - 在 uitableview 部分组织日期

ios - NSPredicate 过滤字典数组(Swift)

ios - 为什么 NSDictionary 为零?

ios - 如何检测物理 body 区域的触摸?

sprite-kit - 无法使用游戏中心功能