2016-03-22 25 views
0

私はこのエラーに遭遇したときに、迅速に衝突を設定する過程にあります。私はそのエラーを修正するためにコード行を変更することができますが、それを行うと、より多くのエラーが発生します。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

を削除することができますので、私はこのメッセージがより明確にすることができないと思う、ちょうどあなたがfirstNodeを設定することを言っているが、あなたはそれを使用していません。修正したら、新しいエラーを教えてください。私は、宣言されていないballCategoryとbarCategoryのエラーを推測します。しかし、とにかくxcodeは意味のあるメッセージを与えるはずです;)基本的なデバッグのようですが、この投稿が他の人に役立つかどうかわかりません... – Heyfara

+0

(contact.bodyB.categoryBitMask == barCategory)を(contact.bodyB。 categoryBitMask == barCollisions)、元のエラーは消えますが、代わりに「値SKNodeを引数タイプUInt32に変換できません」 – Seed12

答えて

1

この行

+0

私は知っていますが、私が持っているコードではfirstNodeを使用する必要があります。私が(contact.bodyB.categoryBitMask == barCategory)を(contact.bodyB.categoryBitMask == barCollisions)に切り替えると、元のエラーは消えますが、代わりにSKNodeをUInt32に変換できないというエラーが表示されます。 – Seed12

+0

これらのエラーは互いに関連していません。そして、あなたはSKNode(barCollisions)をUInt32(categoryBitMask)と比較することはできません。 – Roee84