2014-02-15 30 views
0

我有两个SKNode对象。碰撞时他们的位置发生变化。保持SKNodes不会互相施加力

我该如何预防?同时,我仍然希望能够通过- (void)didBeginContact与他们联系;

我试图将他们的mass财产设置为0.0f但这并不奏效。

回答

2

您可以通过设置类别,碰撞和接触位掩码来实现。

uint32_t bodyABitMask = 1<<0; 
uint32_t bodyBBitMask = 1<<1; 

//A mask that defines which categories this physics body belongs to. 
[bodyA setCategoryBitMask:bodyABitMask]; 
[bodyB setCategoryBitMask:bodyBBitMask]; 

//A mask that defines which categories of physics bodies 
//can collide with this physics body. 
[bodyA setCollisionBitMask:0]; 
[bodyB setCollisionBitMask:0]; 

//A mask that defines which categories of bodies cause 
//intersection notifications with this physics body. 
[bodyA setContactTestBitMask:bodyBBitMask]; 
[bodyB setContactTestBitMask:bodyABitMask]; 

在上面的案例中,bodyA和bodyB不会发生冲突,但是一旦他们联系,您将收到didBeginContact。

+0

太棒了!我正在寻找'collisionBitMask'属性。谢谢! –