1
我创建了一个有5个顶点的多边形,并且所有顶点都由VertexHelper生成。box2d与自定义多边形崩溃
程序为何在ComputeCentroid()在b2PolygonShape.cpp在b2Assert(面积> b2_epsilon)得到SIGABRT?
该程序运行良好,当我使用shape.SetAsBox(0.359375,1.0)代替shape.Set(顶点,计数)。
看来,在使用shape.Set()时计算质心的过程中出现错误,但我不知道如何处理这个问题。
下面的代码:
b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
bodyDef.awake = NO;
bodyDef.position.Set(3.125, 3.125);
bodyDef.angle = -.785398163397;
spriteBody = world->CreateBody(&bodyDef);
spriteBody->SetUserData(sprite);
b2MassData massData = {2.0, b2Vec2(0.021875, 0.203125), 0.0};
spriteBody->SetMassData(&massData);
int32 count = 5;
b2Vec2 vertices[] = {
b2Vec2(-11.5f/PTM_RATIO, -16.0f/PTM_RATIO),
b2Vec2(-10.5f/PTM_RATIO, 15.0f/PTM_RATIO),
b2Vec2(10.5f/PTM_RATIO, 15.0f/PTM_RATIO),
b2Vec2(10.5f/PTM_RATIO, -5.0f/PTM_RATIO),
b2Vec2(-5.5f/PTM_RATIO, -16.0f/PTM_RATIO)
};
b2PolygonShape shape;
shape.Set(vertices, count);
b2FixtureDef fixtureDef;
fixtureDef.shape = &shape;
fixtureDef.density = 1.0f;
fixtureDef.friction = 0.2f;
fixtureDef.restitution = 0.7f;
spriteBody->CreateFixture(&fixtureDef);
我把它逆时针和它的工作。非常感谢你。 :) – rwei