一个运动的刚体,碰到不同行的刚体,和它在同一行的发生碰撞,不在同一行的不碰撞但是可以触发碰撞事件,我打算在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,断在这里了