使用WeldJointDef的两个实体

时间:2014-04-18 02:20:50

标签: javascript libgdx box2d

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

//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/

这个家伙设法实现我想要的东西,(我希望像焊接点附加的那些2个盒子一样)。当然我使用了等效的代码,而焊接点并不像页面中那样僵硬。我正在使用libgdx和box2d(可能是版本或端口问题?)。我正在尝试焊接接头,因为我想稍后逐个销毁这些盒子。我的演员是"映射"每个人的身体。它将允许我摧毁演员并让那些顶尖的人自然而然地堕落。谢谢你的帮助:)

1 个答案:

答案 0 :(得分:1)

焊接接头不是固体"。来自Box2D手册:

  

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

     

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

虽然你的结构不易碎,但你试图将它们组合在一起,使它们像一个整体一样。在你的情况下,我会为你想要的部件动态创建灯具"胶水"在一起。

这会回答你的问题吗?