Box2D的机构为什么对象时关节连接的穿透彼此?

问题描述 投票:0回答:1

Background

我想在一个较高的水平,为什么我得到使用b2.js某些异常行为(包装库Box2D的)要弄清楚。我想颗粒物的晶体结构模型在化工系统(所有表示为b2body矩形),所以我想我应该能够使用b2Joint绳对象粒子连接在一起,并创建单独的矩形的刚性格。

当我只需将屏幕上的b2Body颗粒,不将它们连接起来,该机构的物理期待权。然而,当我晶体的单元链接在一起以b2Joint,所述b2Body框现在能够重叠和互相渗透。

我不知道为什么发生这种情况,并希望任何指导。

Video of the behavior

https://www.youtube.com/watch?v=zEUN238gd6Q&feature=youtu.be

Code from b2.js library

下面是其中的关节创建从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 p5.js
1个回答
1
投票

Box2D的由关节连接机构,当他们collide connected属性设置为false将会互相渗透。这是默认设置。

在碰撞连接属性设置为true,应使连接体之间的碰撞处理,使他们不再互相渗透。

对,我喜欢Box2D的接缝和细节这更一个教程,请访问:http://www.iforce2d.net/b2dtut/joints-overview

© www.soinside.com 2019 - 2024. All rights reserved.