它是形状的属性。我没有为 b2CircleShape 找到这样的属性,但是对于b2PolygonShape
hasm_centroid
参数 - 它是相对于身体的形状中心坐标。指定它以具有形状的有效位置。
对于 b2PolyganShape 有一种方法setAsBox(w, h)
,但还有一种更复杂的方法:
setAsBox(float32 width, float32 height, const b2Vec2 ¢er, float32 rotation)
使用此方法或手动指定质心。
这是U形的代码
b2BodyDef bDef;
bDef.type = b2_dynamicBody;
bDef.position = b2Vec2(0, 0);
b2Body *body = world_->CreateBody(&bDef);
b2PolygonShape shape;
const float32 density = 10;
shape.SetAsBox(1, 0.1);
body->CreateFixture(&shape, density);
shape.SetAsBox(0.1, 1, b2Vec2(-1 + 0.1, 1), 0);
body->CreateFixture(&shape, density);
shape.SetAsBox(0.1, 1, b2Vec2(1 - 0.1, 1), 0);
body->CreateFixture(&shape, density);