2016-03-22 2 views
0

Я в процессе настройки столкновений в swift, когда я столкнулся с этой ошибкой, от которой я не могу избавиться. Я могу изменить строку кода, чтобы исправить эту ошибку, но когда я это делаю, возникает больше ошибок.Настройка столкновений в Swift Xcode

let collisionHitBox = CGRect(x: 201, y: 139, width: 398, height: 212) 

barCollisions.physicsBody? = SKPhysicsBody(edgeLoopFromRect: collisionHitBox) 

    let ballCategory: UInt32 = 0x1 << 0 
    let barCategory: UInt32 = 0x1 << 1 

    ball.physicsBody?.categoryBitMask = ballCategory 
    ball.physicsBody?.usesPreciseCollisionDetection = true 
    ball.physicsBody?.collisionBitMask = ballCategory | barCategory 
    ball.physicsBody?.contactTestBitMask = ballCategory | barCategory 

    barCollisions.physicsBody?.categoryBitMask = barCategory 
    barCollisions.physicsBody?.usesPreciseCollisionDetection = true 






    func didBeginContact(contact: SKPhysicsContact) { 
     let firstNode = contact.bodyA.node as! SKSpriteNode 
     // This is where I get an error saying "Initialization of immutable value was never used, consider replacing it for removing it"  

     let secondNode = contact.bodyB.node as! SKSpriteNode 

     if (contact.bodyA.categoryBitMask == ballCategory) && (contact.bodyB.categoryBitMask == barCategory) 
     { 
      let contactPoint = contact.contactPoint 
      let contact_y = contactPoint.y 
      let target_y = secondNode.position.y 
      let margin = secondNode.frame.size.height/2 - 25 
      if (contact_y > (target_y - margin)) && contact_y < (target_y + margin) { 

       print("GameOver") 


      } 
     } 
+0

Я думаю, что это сообщение не может быть более ясным. Как только вы его исправили, дайте нам новую ошибку. Я предполагаю ошибку с ballCategory и barCategory, которые не объявлены. Но в любом случае xcode должен дать вам содержательное сообщение;) Кажется, что базовая отладка, не уверен, что этот пост может быть полезен другим ... – Heyfara

+0

Когда я переключаю (contact.bodyB.categoryBitMask == barCategory) на (contact.bodyB. categoryBitMask == barCollisions), исходная ошибка исчезает, но вместо этого я получаю сообщение об ошибке: «Невозможно преобразовать значение SKNode! в тип аргумента UInt32» – Seed12

ответ

1

Это просто говорит, что вы установили firstNode, но вы не используете его, так что вы можете удалить эту строку

+0

Я знаю, но я чувствую, что с кодом, который у меня есть, firstNode должен быть в использовании. Когда я переключаю (contact.bodyB.categoryBitMask == barCategory) на (contact.bodyB.categoryBitMask == barCollisions), исходная ошибка исчезает, но вместо этого возникает ошибка, говорящая, что она не может скрывать SKNode до UInt32. – Seed12

+0

Эти ошибки не связаны друг с другом. И вы не можете сравнить SKNode (barCollisions) с UInt32 (categoryBitMask) – Roee84

Смежные вопросы