setCategoryBitmask(int bitmask) setContactTestBitmask(int bitmask) setCollisionBitmask(int bitmask)
CategoryBitmask表示“我是谁”
ContactTestBitmask表示“在我和谁发生碰撞通知我”,是否调用我注册的回调函数。
CollisionBitmask表示”我和谁发生碰撞“,如果a->CategoryBitmask & b->CollisionBitmask等于0或者b->CategoryBitmask & a->CollisionBitmask等于0,不发生碰撞,可以看到物体穿越另一个物体。
相当于在自己注册的回调函数中添加如下代码:
bool ClassName::::onContactBegin(cocos2d::PhysicsContact& contact)
{
if ((contact.shapeA->getCategoryBitmask() & contact.shapeB->getCollisionBitmask()) == 0
|| (contact.shapeB->getCategoryBitmask() & contact.shapeA->getCollisionBitmask()) == 0)
{
return false;
}
//其它