12.b2PrismaticJointDefで直動ジョイントをモータにする

直動ジョイントの設定でモーターにする

回転ジョイントでもモーターにすることができました(b2RevoluteJointDefで回転ジョイントをモータにする)が、同様にこの直動ジョイントでもモーターのごとく動力をもつような動きをさせることができます。

ただし、モーターと言ってもリニアモーターみたいなものでしょうか。

下のサンプルをスタートさせれば納得いただけるかと。

モータに関するコードは以下のように、モーターを使うよってフラグを立てるのと、設定速度および設定速度に達するために使う最大の力の3つの設定が必要です(※部分)。

var jointDef:b2PrismaticJointDef = new b2PrismaticJointDef();

var worldAxis:b2Vec2 = new b2Vec2(1, 0);//可動方向のベクトル
jointDef.Initialize(ground, body, body.GetWorldCenter() , worldAxis);
jointDef.lowerTranslation = -10;//可動範囲下限[m]
jointDef.upperTranslation = 10;//可動範囲上限[m]
jointDef.enableLimit = true;//可動範囲設定をする

jointDef.enableMotor = true;//※フラグを立てる
jointDef.motorSpeed = 1;//[m/s]//※設定速度
jointDef.maxMotorForce = 10;//[N]//※設定速度に達するための最大の力

world.CreateJoint(jointDef);

maxMotorForceプロパティは設定速度に達するための最大の力で、この値を大きくすると、モーターによる動きに反する力が働こうとも"ガン"として動き続けるわけです。

2010年2月16日

→13.b2PulleyJointDefでプーリージョイントを作る

12.b2PrismaticJointDefで直動ジョイントを作る←