13.b2PulleyJointDefでプーリージョイントを作る
プーリージョイントを作る
プーリー(pulley)とは?辞書で調べると"滑車"とあります。
このプーリージョイントを使うと、滑車があるかのような表現ができます。
下のサンプルをスタートさせてから、クリックボタンを適当に押して見てください。
なんとなくプーリージョイントの挙動がわかったところで、コード。
プーリージョイントを作り方
プーリージョイント関連部分のコードはこんな感じです。
var groundAnchor1:b2Vec2 = new b2Vec2(ancPt1.x/SCALE , ancPt1.y/SCALE);
var groundAnchor2:b2Vec2 = new b2Vec2(ancPt2.x/SCALE , ancPt2.y/SCALE);
var anchor1:b2Vec2 = body1.GetWorldCenter();
var anchor2:b2Vec2 = body2.GetWorldCenter();
var ratio:Number = 1;
jointDef.Initialize(body1, body2 , groundAnchor1,groundAnchor2, anchor1,anchor2 , ratio);
world.CreateJoint(jointDef);
Initializeメソッドの引数が多いので、順に整理しましょう。
body1とbody2はプーリージョイントで結ばれる2つの物体を指します。
ここでは同じ形状、同じ重さになっています。
groundAnchor1とgroundAnchor2はswf内の青い小さな丸の部分です。
anchor1とanchor2は各物体内のどこをジョイントで結ぶかを指定します。
ここではGetWorldCenterメソッドで物体の中心部分を指定しています。
本サンプルswfにおいて、画面左の"糸"の長さをLength1、右のをLength2とすると
Length1 + Length2×ratio = 一定
となります。
ここではratio=1なので、Length1 + Length2 = 一定になります。
画面上で右にTotalとして表示しておりますが、ほぼ一定になってますね。
2010年2月23日
12.b2PrismaticJointDefで直動ジョイントをモータにする←