libgdx+box2d 关节在重力作用下无法正常工作



我正在尝试通过连接静态和动态物体来使用 box2d/libgdx 创建一个钟摆。我尝试过各种类型的关节,如距离接头、绳索接头和蜗壳关节,但在重力作用下,动态物体在最初受到关节约束后总是最终会逃逸下来。只有在零重力下,关节才能正常工作。我知道我一定在做一件非常愚蠢的事情。

       world.getBodies(p);
       DistanceJointDef djd=new DistanceJointDef();
       djd.bodyA=p.get(0);
        djd.bodyB=p.get(1);
        djd.localAnchorA.set(0,0);
        djd.localAnchorB.set(0,0);
        djd.collideConnected=true;
               DistanceJoint pend=(DistanceJoint)world.createJoint(djd);   
        pend.setLength(50);

附言。我必须实现一个联系人侦听器。我还没有弄清楚如何做到这一点。设置碰撞侦听器会有所帮助吗?

我尝试了您的确切代码,它可以工作。以下是完整的测试:
@user3312130:它的密度也为零。

确保以至少一次速度迭代来步进世界。当我使用零时,关节慢慢扩大。

ContactListener与此没有任何关系,它无济于事。

另一件事:您将距离接头的长度设置为 50 米。这是一个相当大的距离。Box2D 针对 1x1 米对象进行了优化。它仍然可以工作,我测试了它,但你可能应该使用更小的对象和更小的相机视口。

如果我答对了你的问题,无论你使用的关节类型如何,你的运动身体都会下降。发生这种情况的一个原因是,您可能已经将锚和钟摆都定义为动态物体,并且由于重力,两者都以相同的方式下落。

我假设您尚未渲染锚体,因此您看不到它下降。

相关内容

  • 没有找到相关文章