Do you like my tutorials?

Then consider supporting me on Ko-fi

Talking about Actionscript 3, Box2D and Flash.

Do you like cogs? Do you plan to use them in some game?

Here is a simple function which will allow you to create a cog, configure some parameters and make it work thanks to revolute joint motors.

This script does not introduce any new concept, I just used compound objects and revolute joints:

package {
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import Box2D.Dynamics.*;
	import Box2D.Collision.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;
	import Box2D.Dynamics.Joints.*;
	public class Main extends Sprite {
		private var world:b2World=new b2World(new b2Vec2(0,10),true);
		private var worldScale:Number=30;
		private var theCog:b2Body;
		public function Main() {
			debugDraw();
			addCog(Math.random()*340+150,Math.random()*180+150,Math.random()*100+50,Math.random()*30+5,Math.random()*20+5,Math.floor(Math.random()*15)+6,Math.random()+1);
			addEventListener(Event.ENTER_FRAME,update);
			stage.addEventListener(MouseEvent.CLICK,createCog);
		}
		private function createCog(e:MouseEvent):void {
			world.DestroyBody(theCog);
			addCog(Math.random()*340+150,Math.random()*180+150,Math.random()*100+50,Math.random()*30+5,Math.random()*20+5,Math.floor(Math.random()*15)+6,Math.random()+1);
		}
		private function addCog(pX:Number,pY:Number,r:Number,cogWidth:Number,cogHeight:Number,nCogs:Number,motorSpeed:Number):void {
			var fixtureDef:b2FixtureDef = new b2FixtureDef();
			fixtureDef.restitution=0;
			fixtureDef.density=1;
			var circleShape:b2CircleShape=new b2CircleShape(r/worldScale);
			fixtureDef.shape=circleShape;
			var bodyDef:b2BodyDef=new b2BodyDef();
			bodyDef.userData=new Sprite();
			bodyDef.position.Set(pX/worldScale,pY/worldScale);
			bodyDef.type=b2Body.b2_dynamicBody;
			theCog=world.CreateBody(bodyDef);
			theCog.CreateFixture(fixtureDef);
			var polygonShape:b2PolygonShape = new b2PolygonShape();
			for (var i:Number=0; i

addCog function wants these arguments:

pX: the horizontal position of the center of the cog, in pixels.

pY: the vertical position of the center of the cog, in pixels.

r: the radius of the cog, in pixels

cogWidth: the width of each teeth in the cog

cogHeight: the height of each teeth in the cog

nCogs: number of tooth in the cog

motorSpeed: speed of the motor

and this is the result:

Click on the stage to generate random cogs

Download the source code.

Never miss an update! Subscribe, and I will bother you by email only when a new game or full source code comes out.