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

プーリージョイントを作る

プーリー(pulley)とは?辞書で調べると"滑車"とあります。

このプーリージョイントを使うと、滑車があるかのような表現ができます。

下のサンプルをスタートさせてから、クリックボタンを適当に押して見てください。

なんとなくプーリージョイントの挙動がわかったところで、コード。

プーリージョイントを作り方

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

var jointDef:b2PulleyJointDef = new b2PulleyJointDef();

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日

→14.b2GearJointDefでギアジョイントを作る

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