12.b2PrismaticJointDefで直動ジョイントをモータにする
直動ジョイントの設定でモーターにする
回転ジョイントでもモーターにすることができました(b2RevoluteJointDefで回転ジョイントをモータにする)が、同様にこの直動ジョイントでもモーターのごとく動力をもつような動きをさせることができます。
ただし、モーターと言ってもリニアモーターみたいなものでしょうか。
下のサンプルをスタートさせれば納得いただけるかと。
モータに関するコードは以下のように、モーターを使うよってフラグを立てるのと、設定速度および設定速度に達するために使う最大の力の3つの設定が必要です(※部分)。
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で直動ジョイントを作る←