0
我認爲是一個直接box2d配置包括一個box2d手臂(上臂,前臂和手)靜態身體,其中手臂連接到身體與一個旋轉關節。目標是將手臂向後拉,這樣當手臂向前移動(即腋下投擲)時手中的物體可以被釋放。我已經使電機能夠協助手臂進行腋下運動。box2d旋轉關節馬達速度調整沒有效果
的問題是,我不能拿出的參數值,使不吹過去,我手臂上啓用了限制的現實手臂速度。如果我將maxMotorTorque設置爲一個較小的值(例如小於3.0的任何數字),手臂會逆時針旋轉,並且不會停在我設定的極限上。如果我在每秒5.0至15000.0弧度的範圍內電機轉速設置爲任何,當maxMotorTorque被設定爲4.0的臂的速度不會改變。如果我將maxMotorTorque減小到一個很小的值,那麼手臂會飛過去,但它又一次超過極限。
下面是我使用初始化轉動關節的代碼:
// Create a Revolute Joint at the shoulder
b2RevoluteJointDef revJointDef;
revJointDef.Initialize(body, upperArmBody,
upperArmBody->GetWorldPoint(b2Vec2(0, 15.0/100.0)));
revJointDef.enableLimit = true;
revJointDef.lowerAngle = CC_DEGREES_TO_RADIANS(-45);
revJointDef.upperAngle = CC_DEGREES_TO_RADIANS(20);
revJointDef.enableMotor = true;
revJointDef.motorSpeed = 15000.0;
revJointDef.maxMotorTorque = 4.0;
shoulderJoint = (b2RevoluteJoint*)world->CreateJoint(&revJointDef);
臂的密度爲0.5和對象的手中的密度爲1.0。減少這些密度將使手臂移動得更快,但它又一次超過了極限。
什麼我做錯了任何想法?我怎樣才能讓手臂快速移動而不會超出極限?
我懷疑你可以用恆定的電機速度來做到這一點。嘗試根據手臂/手到目的地的距離來調整速度。 – iforce2d