libgdx 中的旋转关节在限制 reaches.How 时不旋转(不工作)以根据用户触摸控制旋转关节
Revolute joint in libgdx is not rotating back(not working) when limit reaches.How to control revolute joint based on user touch
我一直在寻找如何在 libgdx 中使用基于用户触摸的 box2d 控制旋转关节,旋转关节在到达上部后停止 angle.Is 有什么方法可以控制旋转关节?
`
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)
但没有用
创建关节时,在指定限制时,主体之间的当前相对角度被视为零。
如果关节始终沿同一方向旋转,则限制实际上不会改变,因为就限制而言,新起点现在为零。
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
找到了答案
我一直在寻找如何在 libgdx 中使用基于用户触摸的 box2d 控制旋转关节,旋转关节在到达上部后停止 angle.Is 有什么方法可以控制旋转关节?
`
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)
但没有用
创建关节时,在指定限制时,主体之间的当前相对角度被视为零。
如果关节始终沿同一方向旋转,则限制实际上不会改变,因为就限制而言,新起点现在为零。
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
找到了答案