【问题标题】:Fixing two box2D bodies together securely将两个 box2D 实体牢固地固定在一起
【发布时间】:2011-12-08 16:25:25
【问题描述】:

我正在尝试将两个相隔固定距离的 box2d 实体连接在一起。两个实体都不能自己旋转,连接也应该旋转。身体之间的空隙需要让其他身体通过。

我目前有一个像这样的 b2revoluteJoint 设置:

b2RevoluteJointDef rjd;
rjd.lowerAngle = 0.0f;
rjd.upperAngle = 0.0f;
rjd.Initialize(body2, body1, body2->GetPosition());
rjd.collideConnected = false;
world->CreateJoint(&rjd);

但是,关节不是完全刚性的,并且身体往往会相对于彼此移动相当多的位置。有没有更好的方法来做到这一点?

我还尝试了 b2WeldJoint,但它不起作用,因为我认为两个主体必须​​重叠......

编辑:

我试过的 b2WeldJoint 是:

b2WeldJointDef wj;
wj.Initialize(body1, body2, body1->GetWorldCenter());
world->CreateJoint(&wj);

但是,当我移动一个身体时,另一个身体会保持在原来的位置。

【问题讨论】:

    标签: box2d physics-engine


    【解决方案1】:

    我还尝试了 b2WeldJoint,但它不起作用,因为我认为两个主体必须​​重叠......

    据我所知,身体的形状不一定要重叠。据我了解您的设置,焊接接头是合适的,因为它禁止所有相对平移和旋转。

    【讨论】:

    • Constantinius,我已经用我尝试失败的示例 b2WeldJoint 更新了我的问题。
    • 您对焊接接头的使用对我来说似乎是正确的。您是否尝试过制作两种形状并将它们添加到一个实体中?
    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多