Box2DJSの調査

基本構造

ワールド

ワールド (b2World) がすべてを管理している。worldは以下の機能を持つ

  • 初期パラメータ
    • 境界ボックス (b2AABB) :登録した剛体が動作する領域
    • 重力:登録した剛体に常に影響を及ぼす力
    • スリープフラグ:停止した物体を更新するかどうか
  • 剛体の生成:b2World.CreateBody(b2BodyDef)
  • ジョイントの生成:b2World.CreateJoint(b2###JointDef)

図形定義

図形定義には、以下のものが存在する。

  • b2BoxDef : 矩形
  • b2CircleDef : 円
  • b2PolyDef : 多角形

これらの図形定義を剛体に登録( b2BodyDef.AddShake() )することが可能。

共通プロパティ

  • density : 質量(サイズに対する剛体の重さ。例えば density=2, サイズ=30 の剛体の重さは 2 * 30 = 60)
  • restitution : 反発係数
  • localRotation : 回転角度

サイズ設定

  • b2BoxDef
    • extents.Set(w, h) : 矩形の半分のサイズ
  • b2CircleDef
    • radius : 半径
  • b2PolyDef
    • vertices : 頂点 (b2Vec2の配列) を設定
    • vertexCount : 頂点の数

剛体

剛体定義 (b2BodyDef) を元に、b2World.CreateBody() にパラメータとして渡すことで生成することができる。

プロパティ

  • position.Set(x, y) : 座標

ジョイント

ジョイント定義 (b2###JointDef) を元に、b2World.CreateJoint() にパラメータとして渡すことで生成することができる。

ジョイントの種類

  • b2RevoluteJointDef : 回転ジョイント
  • b2DistanceJointDef : 距離ジョイント
  • b2PrismaticJointDef : 角度ジョイント
  • b2PulleyJointDef : 滑車ジョイント
  • b2GearJointDef : 歯車ジョイント

共通プロパティ

  • body1 : 結合する剛体1
  • body2 : 結合する剛体2

回転ジョイント (b2RevoluteJointDef)

revolutejoint.png 剛体と剛体を止めるピンのようなジョイント

  • anchorPoint : 結合する座標

距離ジョイント (b2DistanceJointDef)

distancejoint.png 2つ剛体の距離を固定するジョイント

  • anchorPoint1 : 結合する座標1
  • anchorPoint2 : 結合する座標2

角度ジョイント (b2PrismaticJointDef)

  • anchorPoint : 結合する座標
  • axis.Set(x, y) : 可動角度
  • 可動範囲
    • enableLimit : 可動範囲を有効にするかどうか (true / false)
    • lowerTranslation : 最小可動距離
    • upperTranslation : 最大可動距離

滑車ジョイント (b2PulleyJointDef )

PulleyJoint.png 2つの剛体の距離を滑車のロープのように制御する行うジョイント。重い方の剛体に伸びていく

  • anchorPoint1 : 結合する座標1
  • anchorPoint2 : 結合する座標2
  • groundPoint1 : 固定座標1 (anchorPoint1からgroundPoint1までが可動範囲となる)
  • groundPoint2 : 固定座標2 (anchorPoint2からgroundPoint2までが可動範囲となる)

歯車ジョイント (b2GearJointDef )