android 当达到限制时,libgdx中的旋转关节不旋转回来(不工作),如何基于用户触摸控制旋转关节

e3bfsja2  于 2023-01-19  发布在  Android
关注(0)|答案(1)|浏览(181)

我一直在研究如何在libgdx中使用box2d根据用户触摸控制旋转关节,旋转关节在达到上角后停止。有没有方法控制旋转关节?

`
     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),但不起作用

nkcskrwz

nkcskrwz1#

创建运动类型时,在指定限制时,实体之间的当前相对Angular 将被视为零。
如果关节始终保持沿同一方向旋转,则限制实际上不会更改,因为就限制而言,新的起点现在为零。

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找到了答案

相关问题