程序实现一个小球和多边形物体从高处下落撞击金字塔,但是只有小球和金字塔会碰撞,多边形不会,并且多边形和小球也不会碰撞,
多边形直接穿过了这些物体,很奇怪
创建多边形刚体代码:
b2BodyDef bodyDef;
if(!iStatic)
{
bodyDef.type=b2_dynamicBody;
}
bodyDef.position.Set(data/PIXTOMETER,data/PIXTOMETER);
m_body=world->CreateBody(&bodyDef);
m_body->SetUserData(id);
int count = (int)data;
b2Vec2 vec;
for (int i=0;i<count;i++)
{
vec*.Set(data*/PIXTOMETER,data*/PIXTOMETER);
}
int32 vcount = count;
b2PolygonShape dynamicBox;
dynamicBox.Set(vec,vcount);
if(!iStatic)
{
b2FixtureDef fixtureDef;
fixtureDef.shape=&dynamicBox;
fixtureDef.density=density;
fixtureDef.friction=friction;
fixtureDef.restitution=restitution;
m_body->CreateFixture(&fixtureDef);
}
else
{
m_body->CreateFixture(&dynamicBox,0.0f);
}
创建小球刚体代码:
b2BodyDef bodyDef;
if(!iStatic)
{
bodyDef.type=b2_dynamicBody;
}
bodyDef.position.Set(data/PIXTOMETER,data/PIXTOMETER);
m_body=world->CreateBody(&bodyDef);
m_body->SetUserData(id);
b2CircleShape dynamicCircle;
dynamicCircle.m_radius = data/PIXTOMETER;
if(!iStatic)
{
b2FixtureDef fixtureDef;
fixtureDef.shape=&dynamicCircle;
fixtureDef.density=density;
fixtureDef.friction=friction;
fixtureDef.restitution=restitution;
m_body->CreateFixture(&fixtureDef);
}
else
{
m_body->CreateFixture(&dynamicCircle,0.0f);
}