我试图通过像这样连接3个矩形在Box2d(在Cocos2d中)中创建“ U”形:
听起来这里的关节不是正确的解决方案,因为我不希望任何运动,所以我创建了一个主体,该主体是中间钻头和侧面的2个固定装置。我将两侧添加到中间位,如下所示:
mainBody->CreateFixture(&leftFixtureDef);
mainBody->CreateFixture(&rightFixtureDef);
这可行,但是将两个侧面固定装置都添加到mainBody的中心。我似乎无法弄清楚如何相对于主体定位固定装置。将精灵/节点附加到灯具并更改位置似乎没有什么不同。
有任何想法吗?
非常感谢。
最佳答案
这是形状的属性。我没有为b2CircleShape找到这种属性,但是对于b2PolygonShape
具有m_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);
关于cocos2d-iphone - Box2d多个固定装置和定位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4706484/