我正在做一个俄罗斯方块,当我尝试使用焊接接头粘合两个物体时,连接线不是刚性的,并且有时会反弹,对我来说这是一个什么神秘的问题:
//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(可能是版本或端口问题?)。我正在尝试焊接接头,因为我想稍后逐个销毁这些盒子。我的演员是"映射"每个人的身体。它将允许我摧毁演员并让那些顶尖的人自然而然地堕落。谢谢你的帮助:)
答案 0 :(得分:1)
焊接接头不是固体"。来自Box2D手册:
使用焊接接头来定义易碎结构很有诱惑力。 但是,Box2D求解器是迭代的,所以关节有点软。 因此,通过焊接接头连接的物体链将会弯曲。
相反,最好是从单个开始创建易碎物体 身体有多个固定装置。当身体破裂时,你可以摧毁一个 夹具并在一个新的身体上重新创建它。请参阅中的Breakable示例 试验台。
虽然你的结构不易碎,但你试图将它们组合在一起,使它们像一个整体一样。在你的情况下,我会为你想要的部件动态创建灯具"胶水"在一起。
这会回答你的问题吗?