我想在一个较高的水平,为什么我得到使用b2.js某些异常行为(包装库Box2D的)要弄清楚。我想颗粒物的晶体结构模型在化工系统(所有表示为b2body
矩形),所以我想我应该能够使用b2Joint
绳对象粒子连接在一起,并创建单独的矩形的刚性格。
当我只需将屏幕上的b2Body颗粒,不将它们连接起来,该机构的物理期待权。然而,当我晶体的单元链接在一起以b2Joint
,所述b2Body
框现在能够重叠和互相渗透。
我不知道为什么发生这种情况,并希望任何指导。
https://www.youtube.com/watch?v=zEUN238gd6Q&feature=youtu.be
下面是其中的关节创建从b2.js代码中的相关位:
function b2Joint(type, bodyA, bodyB, props) {
var j;
if (type=='distance') {
// Create distance joint
} else if (type=='pulley') {
// Create pulley joint
} else if (type=='wheel') {
// Create wheel joint
} else if (type=='rope') {
j = new box2d.b2RopeJointDef();
// Connection between previous and this one
j.bodyA = bodyA.body;
j.bodyB = bodyB.body;
// Equilibrium length
j.maxLength = props.separation/b2scaleFactor;
if (props.xy != undefined) j.localAnchorA = b2scaleTo(props.xy);
} else if (type=='revolute') {
// Create revolute joint
} else if (type=='mouse') {
// Create mouse joint
}
j = b2world.CreateJoint(j);
bodyA.joints.push(j);
return bodyA.joints.length-1;
}
Box2D的由关节连接机构,当他们collide connected属性设置为false将会互相渗透。这是默认设置。
在碰撞连接属性设置为true,应使连接体之间的碰撞处理,使他们不再互相渗透。
对,我喜欢Box2D的接缝和细节这更一个教程,请访问:http://www.iforce2d.net/b2dtut/joints-overview。