2013-10-01 86 views
4

我正在用Apple Sprite Kit編寫一個小遊戲。如何防止兩種類型的SpriteKit節點相互衝突?

我遇到了碰撞問題。 有時我不想讓兩個skobriteNodes與physicsBodys進行交互。

作爲一個例子,我有HERO,ENEMYS和SHOTS,我只希望SHOTS只與ENEMYS進行交互。

但是當兩槍相撞時,他們會改變他們的位置。

用於拍攝的代碼是

shot.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:shot.size]; 
    shot.physicsBody.dynamic = YES; 
    shot.physicsBody.allowsRotation = FALSE; 
    shot.physicsBody.categoryBitMask = playerShotCategory; 
    shot.physicsBody.contactTestBitMask = enemyCategory; 

和敵人的代碼是

activeGameObject.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:activeGameObject.size]; 
    activeGameObject.physicsBody.dynamic = YES; 
    activeGameObject.physicsBody.categoryBitMask = enemyCategory; 
    activeGameObject.physicsBody.contactTestBitMask = playerCategory | playerShotCategory; 
    activeGameObject.physicsBody.allowsRotation = FALSE; 
+3

什麼是「playerShotCategory」,「enemyCategory」和「playerCategory」? –

回答

6

如果你只是想拍攝與敵人進行交互,就需要添加以下代碼:

shot.physicsBody.collisionBitMask = enemyCategory; 
activeGameObject.physicsBody.collisionBitMask = playerShotCategory|playerCategory; 

更多信息,請參見documentation for collisionBitMask。如果您有其他類別需要參與碰撞,則可能需要修改collisionBitMask。

+0

感謝它工作很好。我不明白.collisionbitmask的含義 – tallis