Book Image

Box2D for Flash Games

Book Image

Box2D for Flash Games

Overview of this book

Physics games are getting more and more popular, and Box2D is the best choice if you are looking for a free, stable and robust library to handle physics. With Box2D you can create every kind of 2D physics game, only coding is not the fun part, but the game itself. "Box2D for Flash Games" will guide you through the process of making a Flash physics game starting from the bare bones and taking you by hand through complex features such as forces, joints and motors. As you are learning, your game will have more and more features, like the physics games you are used to playing. The book analyzes two of the most played physics games, and breaks them down to allow readers to build them from scratch in a step-by-step approach. By the end of the book, you will learn how to create basic primitive bodies as well as complex, compound bodies. Motors will give life to cars, catapults and siege machines firing bullets, while a complete collision management will make your game look even more realistic. If you want to make full Flash games with physics, then Box2D for Flash Games will guide you through the entire process of making a Flash physics game.
Table of Contents (15 chapters)
Box2D for Flash Games
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Controlling joints with motors


Some joints, such as the revolute joint feature motors, which in this case can be used to rotate the joint at a given speed unless a given maximum torque is exceeded.

Learning motors will allow you to develop every kind of car/truck game you see on the Web.

  1. To create the truck, we need to apply a motor on the rightmost cart, so in the addCart function we are adding an argument to tell us whether it should have a motor or not. Change the Main function to specify that frontCart will have a motor while rearCart won't:

    public function Main() {
      world=new b2World(new b2Vec2(0,5),true);
      debugDraw();
      ground();
      var frontCart:b2Body=addCart(200,430,true);
      var rearCart:b2Body=addCart(100,430,false);
      var dJoint:b2DistanceJointDef=new b2DistanceJointDef();
      dJoint.bodyA=frontCart;
      dJoint.bodyB=rearCart;
      dJoint.localAnchorA=new b2Vec2(0,0);
      dJoint.localAnchorB=new b2Vec2(0,0);
      dJoint.length=100/worldScale;
      var distanceJoint:b2DistanceJoint;
      distanceJoint...