Box2Dの最近のブログ記事
Box2dで各オブジェクトを連結させる場合、ジョイントを使用して連結させますが、
その連結したオブジェクトを固定するにはenableLimitを使用すると出来ました。
他にも方法はありそうですが、b2RevoluteJointでの場合はこんな感じ。
●固定する場合
enableLimitをfalseにして、その他プロパティを入力すると固定されずに指定した軸にて回転します。
●固定しない場合
ジョイントによる連結とマウスでドラッグできるオブジェクトを作ってみました。
ジョイントには6種類んあるみたいで今回はb2RevoluteJointDefでオブジェクト同士の連結をし、
b2MouseJointDefでマウスドラッグイベントを付けました。
ジョイントの種類についてはこちらのサイト(gihyo.jp)にて詳しく説明されています。
一応下記にも6種類メモします。
・b2DistanceJointDef : 物体と物体の距離を一定に保つだけのシンプルなジョイント
・b2RevoluteJointDef : 物体と物体をピンのようなものでつなぎ,回転させるジョイント
・b2PrismaticJointDef : ピストンのような動きをするジョイント
・b2PulleyJointDef : プーリーの役割を果たすジョイント
・b2GearJointDef : ギアによってつながれている関係を表すジョイント
・b2MouseJointDef : マウスで物を動かすためのジョイント
ここまでBox2Dを触った感じだと、このレベルくらいまで出来ればあとはアイデア次第で色々応用が利きそうです。ジョイントの使い方まで覚えればイメージがかなり広がるなー。
で、出来たのが下記になります。
(要FlashPlayer9)
Box2D_2.2
以下ソースです。

(要FlashPlayer9)
Box2D_2.2
以前からclassesフォルダに格納してあったbox2Dをよーやく触ってみました 汗w
とりあえず基本的な使い方がわかったんで一歩前進かな。
てっきりObjectに直接物理演算ぶちかますのかと思いきや
worldにpolygon生成してそれを操作 → 対象のオブジェクトに数値を代入
ってゆー使い方なんですね。
あと基本的なことっぽいけど気をつけなきゃいけないところとしてはpolygon生成時での単位が
距離単位 : m(メートル)
重さ単位 : kg(キログラム)
時間単位 : sec(秒)
になってその後にm_drawScaleで単位をピクセルに変換。ってとこかな。
まだまだ色々やりたいことあるんでちょいちょい試していきたいと思います。
とりあえず下記サンプルソースです。
・まずBox2Dの影響範囲の決定とワールドの生成をします
・次に地面の設定
・ボックスの設置1(ポリゴンのみの生成の場合)
・ボックスの設置2(ライブラリからリンケージしたMovieClipを参照の場合)
・描画詳細設定
・レンダリング
・MovieClipに適用させる場合はポリゴンの座標数値と対象オブジェクトの数値を合わせます
角度がついている場合はラジアンを度数に変換してから適用させます
