前回の続き
https://marietta.co.jp/diary/4809/
にてBox2Dのワールドの設定まで進みました。
今回は実際にオブジェクトを表示したいと思います。
まずはb2BodyDefクラスでオブジェクトの初期位置を設定します。
b2BodyDefクラスはオブジェクトの初期位置や、表示する角度を設定するクラス
です。
var dodyDef:b2BodyDef = new b2BodyDef();
// 初期位置
dodyDef.position.Set(5.5 / 2, 3);
次にb2PolygonDefクラスでオブジェクトの形状を設定します。
var polygonDef:b2PolygonDef = new b2PolygonDef();
// 横幅:200ピクセル、高さ:15ピクセルの長方形
polygonDef.SetAsBox(2, 0.15);
b2PolygonDefクラスは四角形の形状を設定するクラスで、丸を設定したいときは
b2CircleDefクラスを使用します。
最後にb2Bodyクラスでオブジェクトを設定します。
var body:b2Body = new b2Body();
// world:前回設定したb2Worldクラス
body = world.CreateBody( dodyDef );
body.CreateShape( polygonDef );
これでオブジェクトの表示準備が完了しました。
表示を行うにはb2DebugDrawクラスを使用し描画命令を行う必要があります。
var debugDraw:b2DebugDraw = new b2DebugDraw();
debugDraw.m_sprite = this;
// 1m=100ピクセルに設定
debugDraw.m_drawScale = 100;
// 表示オブジェクトの透明度を設定
debugDraw.m_fillAlpha = 0.3;
// 物体を表示設定に
debugDraw.SetFlags(b2DebugDraw.e_shapeBit);
// ワールドにセット
world.SetDebugDraw(debugDraw);
// 物理シミュレーション更新
world.Step( 1/30 , 10 );
これにてようやく静止した長方形が表示されます。
最後の
world.Step( 1/30 , 10 );
は設定した秒数(1/30)につき設定した回数(10)物理シミュレーションが実行
されるメソッドです。
これだけで結構な長くなってしまったので今回はこれにて終わりにしたいと思い
ます。
次はオブジェクト同士の衝突までご紹介したいと思います。