我一直在寻找如何用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)
,但它无效
答案 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
找到答案