0

モーターと下限と上限を備えた revoluteJoint を作成しました。revoluteJoint を下限と上限の間で振動させる方法を知りたいです。現在、ボディは下限から上限に向かってスイングし、その後停止します。どんな助けでも大歓迎です。これがコードです

   final RevoluteJointDef revoluteJointDef2 = new RevoluteJointDef();   
   revoluteJointDef2.initialize(legBody, circleBody1, circleBody1.getWorldCenter());
   revoluteJointDef2.enableMotor = true;
   revoluteJointDef2.enableLimit = true;
   rj2 = (RevoluteJoint) this.mPhysicsWorld.createJoint(revoluteJointDef2);
   rj2.setMotorSpeed(2);
   rj2.setMaxMotorTorque(10);
   rj2.setLimits((float)(30 * (Math.PI)/180), (float)(270 * (Math.PI)/180));

ジョイントを逆方向にしてもう一度繰り返すにはどうすればよいですか?

4

2 に答える 2

0

すべてのステップで次のことを行います。

if ((joint->GetUpperLimit() - joint->GetJointAngle()) < yourSomeAlpha)
{
     // Reached upper limit, go to another limit
     joint->SetMotorSpeed(-2);
}
if ((joint->GetJointAngle() - joint->GetLowerLimit()) < yourSomeAlpha)
{
     // Reached lower limit, go to another limit
     joint->SetMotorSpeed(2);
}

パラメータyourSomeAlphaは実験的なものを選択します。たとえば、0.01 を試してください。

于 2013-07-01T18:51:15.067 に答える