2014-10-18 76 views
0

我在我的代碼中收到錯誤。我以爲我打電話給contact.bodyA,但目前爲止還沒有閱讀。我錯過了什麼或使用if語句都錯了嗎?我是一個新的程序員,所以很抱歉,如果這很容易,或者它很模糊。如果您需要更多信息,請與我們聯繫!提前致謝!SKPhysicsBody沒有名爲「您的變量」的成員

func didBeginContact(contact: SKPhysicsBody!){ 

    // Body1 and 2 depend on the categoryBitMask << 0 and << 1 
    var firstBody:SKPhysicsBody 
    var secondBody:SKPhysicsBody 

    if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask){ ERROR- (SKPhysicsBody does not have a member named'bodyA') 
     firstBody = contact.bodyA 
     secondBody = contact.bodyB 
    }else{ 
     firstBody = contact.bodyB 
     secondBody = contact.bodyA 
    } 

    if ((firstBody.contactTestBitMask & photonTorpedoCategory) != 0 && (secondBody.contactTestBitMask & alienCategory) != 0){ 
     torpedoDidCollideWithAlien(firstBody.node as SKSpriteNode, alien: secondBody.node as SKSpriteNode) 
    } 
} 

回答

0

這是因爲接觸不應該是SKPhysicsBody;它應該是一個SKPhysicsContact對象。 SKPhysicsBody沒有名爲bodyA(或bodyB)的會員,因爲他們是SKPhysicsContact的成員。

正確的聲明爲您didBeginContact功能應該是這樣的:

func didBeginContact(contact: SKPhysicsContact) { 
    //Your code in here 
} 
+0

是的,這是它!非常感謝我永遠不會知道! – Tom 2014-10-19 17:24:18

-2

試一下:

func didBeginContact(contact: SKPhysicsBodyContact!){ 

    // Body1 and 2 depend on the categoryBitMask << 0 and << 1 
    var firstBody:SKPhysicsBody 
    var secondBody:SKPhysicsBody 

    if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask) 
     firstBody = contact.bodyA 
     secondBody = contact.bodyB 
    }else{ 
     firstBody = contact.bodyB 
     secondBody = contact.bodyA 
    } 

    if ((firstBody.contactTestBitMask & photonTorpedoCategory) != 0 && (secondBody.contactTestBitMask & alienCategory) != 0){ 
     torpedoDidCollideWithAlien(firstBody.node as SKSpriteNode, alien: secondBody.node as SKSpriteNode) 
    } 
}