【问题标题】:Two bodies using WeldJointDef使用 WeldJointDef 的两个实体
【发布时间】:2014-04-18 02:20:49
【问题描述】:

我正在做一个俄罗斯方块,当我尝试使用焊接接头粘合两个物体时,连接线不是刚性的,并且物体有时会弹跳,对我来说神秘的是这段代码是如何使用的:

//create distance joint between b and c
var joint_def = new b2WeldJointDef();
joint_def.bodyA = b;
joint_def.bodyB = c;

//connect the centers - center in local coordinate - relative to body is 0,0
joint_def.localAnchorA = new b2Vec2(-0.5, -0.5);
joint_def.localAnchorB = new b2Vec2(0.5, 0.5);

//difference in angle of each body
joint_def.referenceAngle = 0 * Math.PI / 3;

//add the joint to the world
world.CreateJoint(joint_def);

在此页面上工作:http://www.binarytides.com/weld-joint-box2d-javascript/

这家伙设法实现了我想要的,(我想要像焊接接头连接的那两个盒子那样的东西)。当然,我使用了等效的代码,并且焊接接头不像页面中的那样严格。我正在使用 libgdx 和 box2d(可能是版本或端口问题?)。我正在尝试焊接接头,因为我想稍后一个一个地销毁这些盒子。我的演员被“映射”到每个身体。这将允许我摧毁演员,让那些在顶部的演员自然而然地倒下。谢谢你的帮助:)

【问题讨论】:

    标签: javascript libgdx box2d


    【解决方案1】:

    焊接接头不是“实心”的。来自 Box2D 手册:

    使用焊接接头来定义易碎结构是很有诱惑力的。 然而,Box2D 求解器是迭代的,所以关节有点软。 因此,通过焊接接头连接的主体链会弯曲。

    相反,最好从单个开始创建可破坏的实体 具有多个固定装置的主体。当身体断裂时,你可以摧毁一个 夹具并在新的身体上重新创建它。请参阅中的 Breakable 示例 测试平台。

    虽然您的结构是不可破坏的,但您正试图将它们固定在一起以使它们像一个整体一样运作。在您的情况下,我会为您想要“粘合”在一起的部件动态创建固定装置。

    这能回答你的问题吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      • 1970-01-01
      • 2018-01-02
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多