domingo, 23 de junio de 2013

Hola Mundo con Box2D, tutorial básico para principiantes

En este sencillo tutorial flash de ActionScript 3.0 queremos hacer una muy breve demostración de como empezar a utilizar Box2DFlash

Video con la explicación paso a paso:
 Enlace para descargar de Box2DFlash: Box2dFlash.org

Código:


package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import Box2D.Dynamics.*;
    import Box2D.Collision.*;
    import Box2D.Collision.Shapes.*;
    import Box2D.Common.Math.*;
    public class demo extends Sprite {
        public var the_world:b2World;
        var time_count:Timer=new Timer(1000);
        public function demo() {
            var environment:b2AABB = new b2AABB();
            environment.lowerBound.Set(-100.0, -100.0);
            environment.upperBound.Set(100.0, 100.0);
            var gravity:b2Vec2=new b2Vec2(0.0,10.0);
            the_world=new b2World(environment,gravity,true);
            var debug_draw:b2DebugDraw = new b2DebugDraw();
            var debug_sprite:Sprite = new Sprite();
            addChild(debug_sprite);
            debug_draw.m_sprite=debug_sprite;
            debug_draw.m_drawScale=30;
            debug_draw.m_fillAlpha=0.5;
            debug_draw.m_lineThickness=1;
            debug_draw.m_drawFlags=b2DebugDraw.e_shapeBit;
            the_world.SetDebugDraw(debug_draw);
            var final_body:b2Body;
            var the_body:b2BodyDef;
            var the_box:b2PolygonDef;
            the_body = new b2BodyDef();
            the_body.position.Set(8.5, 13);
            the_box = new b2PolygonDef();
            the_box.SetAsBox(8.5, 0.5);
            the_box.friction=0.3;
            the_box.density=0;
            final_body=the_world.CreateBody(the_body);
            final_body.CreateShape(the_box);
            final_body.SetMassFromShapes();
            addEventListener(Event.ENTER_FRAME, on_enter_frame);
            time_count.addEventListener(TimerEvent.TIMER, on_time);
            time_count.start();

        }
        public function on_time(e:Event) {
            var final_body:b2Body;
            var the_body:b2BodyDef;
            var the_box:b2PolygonDef;
            the_body = new b2BodyDef();
            the_body.position.Set(Math.random()*10+2, 0);
            the_box = new b2PolygonDef();
            the_box.SetAsBox(Math.random()+0.1,Math.random()+0.1);
            the_box.friction=0.3;
            the_box.density=1;
            final_body=the_world.CreateBody(the_body);
            final_body.CreateShape(the_box);
            final_body.SetMassFromShapes();
        }
        public function on_enter_frame(e:Event) {
            the_world.Step(1/30, 10);
        }
    }
}



 Agradecimiento del código a Emanuele Fenorato

No hay comentarios:

Publicar un comentario