cocos2dx box2d 关于设置一个刚体碰到不同刚体的不同反应

一个运动的刚体,碰到不同行的刚体,和它在同一行的发生碰撞,不在同一行的不碰撞但是可以触发碰撞事件,我打算在ContactListener::BeginContact 中设置这个刚体的sensor

void ContactListener::BeginContact(b2Contact* contact)
{
    b2Body *bodyA = contact->GetFixtureA()->GetBody();
    b2Fixture *fixtureA = contact->GetFixtureA();
    b2Body *bodyB = contact->GetFixtureB()->GetBody();
    b2Fixture *fixtureB = contact->GetFixtureB();
    if (bodyA->GetUserData() != NULL && bodyB->GetUserData() != NULL)
    {
        CommonBullet* bNodeA;
        CommonBullet* bNodeB;
        if (bodyA->GetType() == b2_dynamicBody)
        {
            bNodeA = (CommonBullet*)bodyA->GetUserData();
            CCNode* node = (CCNode*)bodyB->GetUserData();
            if (bNodeA->getTag() == RICOCHET && bNodeA->row == node->getTag())
            {
                fixtureA->SetSensor(false);
            }
            else
            {
                fixtureA->SetSensor(true);
            }
        }
        if (bodyB->GetType() == b2_dynamicBody)
        {
            bNodeB = (CommonBullet*)bodyB->GetUserData();
            CCNode* node = (CCNode*)bodyA->GetUserData();
            if (bNodeB->getTag() == RICOCHET && bNodeB->row == node->getTag())
            {
                fixtureB->SetSensor(false);
            }
            else if (bNodeB->getTag() == RICOCHET)
            {
                fixtureB->SetSensor(true);
            }
        }
 
    }
}
```


但是总是弹出错误
b2ContactSolver::b2ContactSolver 中的
b2Manifold* manifold = contact->GetManifold();
int32 pointCount = manifold->pointCount;
b2Assert(pointCount > 0);

pointcount 总是为0,断在这里了