1. 大きさの定義
var worldAABB:b2AABB = new b2AABB();
worldAABB.lowerBound.Set(-100, -100);
worldAABB.upperBound.Set(100, 100);
2. 重力の設定
var gravity:b2Vec2 = new b2Vec2(0, 10);
3. new World
world = new b2World(worldAABB, gravity, true);
- 外枠はAABB(Axis-Aligned Bounding Box)
- 外枠の定義はメートル/ピクセルのスケールを考慮して
- topleftとbottomrightを設定
- 重力の方向は自由
1. 位置の定義
var boxBodyDef:b2BodyDef = new b2BodyDef();
boxBodyDef.position.Set(2.5, 1);
2. 形の定義
var boxShapeDef:b2PolygonDef= new b2PolygonDef();
boxShapeDef.SetAsOrientedBox(0.3, 0.2, new b2Vec2(0, 0), 0.8);
3. 重さ等の定義
boxShapeDef.density = 1; // 密度 [kg/m^2]
boxShapeDef.restitution = 0.2; // 反発係数、通常は0~1
4. ワールドへの登録
var boxBody:b2Body = world.CreateDynamicBody(boxBodyDef);
boxBody.CreateShape(boxShapeDef);
boxBody.SetMassFromShapes();
1. 位置の定義
var floorBodyDef:b2BodyDef = new b2BodyDef();
floorBodyDef.position.Set(2.5, 3);
2. 形の定義
var floorShapeDef:b2PolygonDef = new b2PolygonDef();
floorShapeDef.SetAsBox(2, 0.1);
3. ワールドへの登録
var floor:b2Body = world.CreateStaticBody(floorBodyDef);
floor.CreateShape(floorShapeDef);
var debugDraw:b2DebugDraw = new b2DebugDraw();
debugDraw.m_sprite = this;
debugDraw.m_drawScale = 100; // 1mを100ピクセルにする
private function enterFrameHandler(event:Event):void {
// Flashはデフォルトで秒間24フレームなので、
// 物理シミュレーションを1/24秒進める
world.Step(1 / 24, 10);
}
|