2014-12-28 29 views
0

好的,所以我有OBJ A墜落的物體。 OBJ B就像一枚硬幣......我想說明一下。在交叉這兩個對象時。 OBJ b影響下降的速度/軌跡OBJ一個..如何在Sprite工具包中相交時讓落下的物體不會受到其他物體的影響?

我使用這個:

- (void)didBeginContact:(SKPhysicsContact *)contact

我怎樣才能讓相交「OBJ B」用時「OBJ」不影響下降速度或「obj a」的軌跡?

這是 「一個OBJ」:

 ship = [SKSpriteNode spriteNodeWithImageNamed:@"theShip"]; 
    [email protected]"ship"; 
    ship.anchorPoint=CGPointMake(0.5, 0.5); 
    ship.size=CGSizeMake(100, 50); 
    ship.position=CGPointMake(CGRectGetMidX(myWorld.frame), 0); 
    ship.physicsBody.dynamic = YES; 
    [SKPhysicsBody bodyWithCircleOfRadius:50]; 
    ship.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:ship.frame.size.width * 0.5]; 
    ship.physicsBody.allowsRotation=NO; 
    ship.physicsBody.categoryBitMask=shipCategory; 
    ship.physicsBody.contactTestBitMask = coinCategory | padCategory; 

這就是 「OBJ B」:

Coin *node = [Coin node]; 
[node setPosition:position]; 
[node setName:@"node_coin"]; 

[node setCoinType:coinType]; 
SKSpriteNode *sprite; 
if (coinType == COIN_NORMAL) { 
    sprite = [SKSpriteNode spriteNodeWithColor:[UIColor yellowColor] size:CGSizeMake(50, 50)]; 
} else if (coinType == COIN_DOUBLE){ 
    sprite = [SKSpriteNode spriteNodeWithColor:[UIColor redColor] size:CGSizeMake(50, 50)]; 
}else if (coinType == COIN_TRIPLE){ 
    sprite = [SKSpriteNode spriteNodeWithColor:[UIColor blueColor] size:CGSizeMake(50, 50)]; 

} 
[node addChild:sprite]; 

node.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:sprite.size.width/2]; 
node.physicsBody.affectedByGravity=NO; 

node.physicsBody.dynamic = NO; 
node.physicsBody.categoryBitMask = coinCategory; 
node.physicsBody.collisionBitMask = 0; 
node.physicsBody.contactTestBitMask = 0; 

我附加的圖像,使這個更加清晰..

enter image description here

+0

你是怎麼設置'ObjA和ObjB物理機構的'collisionBitMask''至? – damirstuhec

+0

@ Damir179我已更新我的問題。 –

+0

戒指:),是的,這解決了我的小新手問題。非常感謝你。你能寫這個答案嗎?它可能會幫助別人。 –

回答

1

TL; DR:collisionBitMask設置爲0xFFFFFFFF(即,a1 l位設置 - 謝謝0x141E)默認情況下。

這意味着ObjA將與其設置爲physicsBody的每個對象碰撞。

解決方案:設置collisionBitMask ObjA比0

collisionBitMask定義不同的東西:

@property (nonatomic, assign) uint32_t collisionBitMask; 
+2

默認情況下,衝突位掩碼不爲0。它的值是0xFFFFFFFF(即所有的位被設置),所以它與所有的東西相沖突。 – 0x141E

+0

@ 0x141E這是正確的。完全錯過了。我會更新答案。 – damirstuhec

相關問題