【发布时间】:2014-02-15 17:10:56
【问题描述】:
我有两个 SKNode 对象。当它们碰撞时,它们的位置会发生变化。
如何防止这种情况发生?同时,我仍然希望能够通过- (void)didBeginContact回复他们的联系方式;
我尝试将他们的mass 属性都设置为0.0f,但没有奏效。
【问题讨论】:
标签: ios macos sprite-kit game-physics
我有两个 SKNode 对象。当它们碰撞时,它们的位置会发生变化。
如何防止这种情况发生?同时,我仍然希望能够通过- (void)didBeginContact回复他们的联系方式;
我尝试将他们的mass 属性都设置为0.0f,但没有奏效。
【问题讨论】:
标签: ios macos sprite-kit game-physics
您可以通过设置类别、碰撞和接触位掩码来实现。
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。
【讨论】:
collisionBitMask 属性。谢谢!