当限制到达时,libgdx中的旋转关节不会向后旋转(不工作)。如何根据用户触摸控制旋转关节

时间:2016-02-06 15:56:14

标签: android libgdx box2d

我一直在寻找如何用lib2d控制libgdx中的旋转关节,基于用户触摸,旋转关节在达到上角后停止。是否有任何方法可以控制旋转关节?

   `
     jd = new RevoluteJointDef();
     jd.initialize(bodyPivot, boxBody, anchor);

    jd.lowerAngle = 0.75f * (float)3.14; // -90 degrees
    jd.upperAngle = 0.75f * (float)3.14; // 45 degrees
    jd.collideConnected=false;
    jd.enableLimit = true;
    jd.maxMotorTorque = 1000.0f;
    jd.enableMotor=false;
    jd.motorSpeed = 0f*(float)3.14;
    rj = (RevoluteJoint) world.createJoint(jd);`

我尝试使用rj.enableMotor(true),但它无效

1 个答案:

答案 0 :(得分:0)

创建关节时,在指定限制时,主体之间的当前相对角度为零。

如果关节始终以相同方向旋转,则限制实际上不会发生变化,因为就限制而言,新起点现在为零。

jointDef.upperAngle = MathUtils.PI;
jointDef.lowerAngle = 0;//the position when joint was created

但如果关节在下降之前应该旋转回原来的位置,那就像是:

jointDef.upperAngle = atTop ? 0 : MathUtils.PI;
jointDef.lowerAngle = atTop ? -MathUtils.PI : 0;

我从here

找到答案