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

直動ジョイントを作る

日本語でどういう名称がいいのか不明ですが、とりあえずPrismaticジョイントは直動ジョイントってことで。

この直動ジョイントは物体の動きを一直線上に固定するジョイントです。

これを使えば、ピストンみたいなのを表現できるわけです。

と言っても下のサンプルは全然ピストンではありませんが、、、

中央の大きい円が直動ジョイントにより水平方向に固定されています。

ここでは、変化できる位置の制限をしており、ピンク色の線がその可動範囲です。

直動ジョイントの作り方

直動ジョイント関連部分のコードはこんな感じです。

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;//※可動範囲設定をする

world.CreateJoint(jointDef);

bodyは画面中央の大きい円です。

groundはディスタンスジョイントなどと同じ(9.b2DistanceJointDefでディスタンスジョイントを作る)。

Initializeメソッドの4つ目の引数で可動方向を示すベクトルをb2Vec2クラスで指定する必要があります。

ここでは(1,0)としていますから、x軸方向(画面だと水平方向)に固定されるわけです。

なお、ここでは可動範囲を設定するための設定を行っています(※印の3行)。

2010年2月5日

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

11.b2RevoluteJointで回転ジョイント情報を得る/設定する←