Flash Physics Engine Box2DFlashAS3 1.4.3
http://box2dflash.sourceforge.net/ サンプルを見ながら作ってみた。
クリックすると箱が出てきます。
ソースダウンロード
http://box2dflash.sourceforge.net/ サンプルを見ながら作ってみた。
クリックすると箱が出てきます。
このコンテンツには最新のFlashPlayerが必要です
ソースダウンロード
package {
import flash.display.*;
import flash.events.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.Math.*;
public class Box2DSample01 extends MovieClip {
private var m_world:b2World;
private var m_iterations:int = 10;
private var m_timeStep:Number = 1/30;
public function Box2DSample01() {
addEventListener(Event.ENTER_FRAME, update);
stage.addEventListener(MouseEvent.CLICK, createBox);
var worldAABB:b2AABB = new b2AABB();
worldAABB.minVertex.Set(-1000.0, -100.0);
worldAABB.maxVertex.Set(1000.0, 1000.0);
var gravity:b2Vec2 = new b2Vec2(0.0, 300.0);
var doSleep:Boolean = true;
m_world = new b2World(worldAABB, gravity, doSleep);
createGround();
}
private function createGround():void {
var bodyDef:b2BodyDef;
var boxDef:b2BoxDef;
bodyDef = new b2BodyDef();
boxDef = new b2BoxDef();
boxDef.extents.Set(1000, 100);
boxDef.friction = 0.3;
bodyDef.position.Set(0, 380);
bodyDef.AddShape(boxDef);
bodyDef.userData = new ground();
bodyDef.userData.width = boxDef.extents.x * 2;
bodyDef.userData.height = boxDef.extents.y * 2;
addChild(bodyDef.userData);
m_world.CreateBody(bodyDef);
}
private function createBox(e:MouseEvent):void {
var bodyDef:b2BodyDef;
var boxDef:b2BoxDef;
bodyDef = new b2BodyDef();
boxDef = new b2BoxDef();
boxDef.extents.Set(15, 15);
boxDef.density = 1.0;
boxDef.friction = 0.5;
boxDef.restitution = 0.2;
bodyDef.AddShape(boxDef);
bodyDef.userData = new box();
bodyDef.userData.width = boxDef.extents.x * 2;
bodyDef.userData.height = boxDef.extents.y * 2;
bodyDef.position.x = stage.mouseX;
bodyDef.position.y = stage.mouseY;
bodyDef.rotation = Math.random() * Math.PI / 8;
m_world.CreateBody(bodyDef);
addChild(bodyDef.userData);
}
private function update(e:Event):void {
m_world.Step(m_timeStep, m_iterations);
for (var bb:b2Body = m_world.m_bodyList; bb; bb = bb.m_next) {
if (bb.m_userData is Sprite) {
bb.m_userData.x = bb.m_position.x;
bb.m_userData.y = bb.m_position.y;
bb.m_userData.rotation = bb.m_rotation * (180/Math.PI);
}
}
}
}
}



