The below function creates a polygon in the shape of a triangle.
Please call the debugdraw function inside your update method to view the results.
Make sure you import the Box2D classes into your file.

public function init():void
{
	 debug_draw();
	 addEventListener(Event.ENTER_FRAME, update);
	 createTriangle();
}


 public function createTriangle():void
 {
	 var fd : b2FixtureDef = new b2FixtureDef();
	 var initVel : b2Vec2 = new b2Vec2();
	 var bodyDef:b2BodyDef= new b2BodyDef();
	 var shape : b2PolygonShape = new b2PolygonShape();
	 bodyDef.type = b2Body.b2_dynamicBody;
	 bodyDef.position.Set(4.446215, 3.649402);
	 bodyDef.angle = 0.000000;
	 var polygon1 : b2Body = world.CreateBody(bodyDef);
	 initVel.Set(0.000000, 0.000000);
	 polygon1.SetLinearVelocity(initVel);
	 polygon1.SetAngularVelocity(0.000000);

	 var arr : Vector. = new Vector.();
	 arr[0] = new b2Vec2(-0.980080, 2.374502);
	 arr[1] = new b2Vec2(-0.980080, -1.187251);
	 arr[2] = new b2Vec2(1.960159, -1.187251);
	 shape.SetAsVector(arr,3);
	 fd.shape = shape;
	 fd.density = 0.30;
	 fd.friction = 0.300000;
	 fd.restitution = 0.600000;
	 fd.filter.groupIndex = 0;
	 fd.filter.categoryBits = 65535;
	 fd.filter.maskBits = 65535;
	 polygon1.CreateFixture(fd);
}


public function debug_draw():void
{
	 var debug_draw:b2DebugDraw = new b2DebugDraw();
	 var debug_sprite:Sprite = new Sprite();

	 /** Use this instead of addChild() ********/

	 var ui:UIComponent = new UIComponent();
	 ui.addChild(debug_sprite);
	 this.addElement(ui);

	 /*****************************************/
	 //addChild(debug_sprite);
	 debug_draw.SetSprite(debug_sprite);
	 debug_draw.SetDrawScale(world_scale);
	 debug_draw.SetFlags(b2DebugDraw.e_shapeBit|b2DebugDraw.e_jointBit);
	 debug_draw.SetFillAlpha(0.5);
	 world.SetDebugDraw(debug_draw);
}

public function update(e:Event) : void
{
	 //We need to do this to simulate physics

	 world.Step(m_timestep,m_iterations,10);
	 for (var bb:b2Body=world.GetBodyList(); bb; bb=bb.GetNext())
	 {
		 if (bb.GetUserData() is Sprite)
		 {
			 bb.GetUserData().x=bb.GetPosition().x * 30;
			 bb.GetUserData().y=bb.GetPosition().y * 30;
			 bb.GetUserData().rotation=bb.GetAngle() * 180 / Math.PI;
		 }
	 }
	 world.DrawDebugData();
}
 

Leave a Reply

Your email address will not be published. Required fields are marked *

 

 

 

Theme by HermesThemes

Copyright © 2018 CoderzHeaven. All Rights Reserved

Please wait...

Subscribe to our newsletter

Want to be notified when our article is published? Enter your email address and name below to be the first to know.