2016-03-22 29 views
0

Hızla çarpışmalar gerçekleştiriyorum. Bu hatayı düzeltmek için etraftaki bir kod satırını değiştirebilirim, ancak bunu yaptığımda daha fazla hata oluşur.Swift Xcode'taki çarpışmaların ayarlanması

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

kaldırmak böylece, bunu kullanarak olmadığını söylüyor. Düzeltdikten sonra, bize yeni hatasını bildirin. Beyan edilmeyen ballCategory ve barCategory ile ilgili bir hata olacağını tahmin edeceğim. Ama her neyse xcode size anlamlı bir mesaj vermelidir;) Temel hata ayıklama gibi görünüyor, bu mesajın diğerlerine yararlı olabileceğinden emin değilsiniz ... – Heyfara

+0

(contact.bodyB.categoryBitMask == barCategory) 'i (contact.bodyB. categoryBitMask == barCollisions), özgün hata kaybolur ama yerine bir hata alıyorum: "SKNode! değeri argüman türüne UInt32 dönüştüremiyorum" – Seed12

cevap

1

Tıpkı-düğüm ayarlamak ama bu çizgiyi bu mesajı daha net olamaz düşünüyorum

+0

Biliyorum ama sahip olduğum kod ile hissediyorum, firstNode kullanımda olmalıdır. (Contact.bodyB.categoryBitMask == barCategory) 'ı (contact.bodyB.categoryBitMask == barCollisions) olarak değiştirdiğimde, özgün hata kaybolur, ancak bunun yerine bir SKNode'u UInt32'ye dönüştüremediğini söyleyen bir hata alıyorum. – Seed12

+0

Bu hata birbiriyle ilişkili değil. Ve SKNode'u (barCollisions) UInt32 (categoryBitMask) ile karşılaştıramazsınız – Roee84