Build 10 games and learn game development along the way in this fast paced game development course

Get the source code of 12 commercial games, loaded 50+ million times, and learn the secrets of game design

Learn how to make a successful Flash game from a real world example. Fully commented source code

Create realistic Flash physics games from scratch with advanced features, from Angry Birds to Crush the Castle

Two ways to make Box2D cars

I am showing you two ways to make cars with Box2d, with source codes included

These are examples I found on the web – I will make my ones later – you can find interesting in order to make cars using Box2D.

Top Down Car Simulation

Making a top down game in Box2D is not that different than making a side view game… you just don’t have to set gravity.

Here it is a top-down racing game

And this is the script to handle it

more information at the official forum thread

Truck car game

This is a truck car game, this concept was very popular a couple of years ago.

The truck is made using various joints, such as revolute joints and prismatic joints.

Here it is the source code:

Follow the official thread here.

Rate this post: 1 Star2 Stars3 Stars4 Stars5 Stars (65 votes, average: 4.68 out of 5)
Loading...Loading...
Learn how to make a successful commercial Flash game from a real world example: get the fully commented source code of Globez, a Flash game played millions of times which generated a four figure income. Limited copies available.

Get it now
Be my fan on Facebook and follow me on Twitter! Exclusive content for my Facebook fans and Twitter followers

This post has 65 comments

  1. Bruno

    on April 6, 2009 at 2:48 pm

    Simple and Perfect! Thanks Emanuele, i search this entire last week!

  2. Eliott Robson

    on April 6, 2009 at 7:21 pm

    WOW, Always wanted to know how to do this! How would i go about using images rather than squares so i could design a motorbike or something?

  3. Monkios

    on April 6, 2009 at 7:37 pm

    Pretty neat.

  4. Brian Yamabe

    on April 6, 2009 at 9:38 pm

    Awesome, I have an idea for a top-down auto game and had no idea where to start. Thanks!

  5. Rasheed

    on April 6, 2009 at 10:04 pm

    Very cool examples! Can’t wait to see some more.

  6. Xitri

    on April 6, 2009 at 10:13 pm

    In the first example the car moves as though in water. The centre of rotation at the car is exposed on the centre? I tried to do such, the truth not with Box2D, and the centre of rotation of the car put between back wheels: http://xitri.com/2008/07/09/flash-programming-drive-a-car.html

  7. Houen

    on April 7, 2009 at 10:40 am

    Great post, emanuele!

  8. Peter

    on April 7, 2009 at 6:19 pm

    :o :o Awesomeeeeeeeee… I searched for this for a while ago but gave up, now I found it xD

  9. Bookmarks for April 9th from 09:00 to 09:00 « what i say // jon burger

    on April 9, 2009 at 11:20 am

    […] Two ways to make Box2D cars : Emanuele Feronato – […]

  10. reyco1

    on April 12, 2009 at 9:38 pm

    Hey… why is the y scale -1 in the second example? The values look so small also..

  11. dVyper

    on April 27, 2009 at 4:44 pm

    These examples are absolutely amazing! Good work :)

  12. bogdan

    on October 28, 2009 at 10:24 am

    Hi ,
    in the truck game demo you have the add wheel function and you set there wheel1.
    the question is how do I reset the wheel1.angle?

    If I use wheel1.GetAngle I can only see it but can’t set it and if I try with wheel1.angle=0; or wheel1.rotation=0; doens’t work.. please help
    thanks!
    you’re awesome!

  13. Xorox

    on February 4, 2010 at 2:35 pm

    Hi Emanuel, great example, as always.. i have a question, how would you introduce a handbrake to your topview car simulation ?

  14. T

    on March 12, 2010 at 2:36 pm

    great examples! I was wondering if you could make an updated version for the new 2.1a version of Box2d – as it looks like GetXForm (and xforms altogether) are now gone from the library!

  15. eanjo

    on March 19, 2010 at 5:23 am

    Nice tutorial.
    But when i copy the source code, i cant run it,
    here’s the error I’ve recieve:

    1046: Type was not found or was not a compile-time constant: Input.

    1180: Call to a possibly undefined method Input.

    1120: Access of undefined property FRateLimiter.

    I don’t know that input variable.;-(

    can any one knows this case?
    and what if i want my movieclip to be the image on stage?

  16. saravanan

    on April 5, 2010 at 6:59 am

    Hi guys second tutorial not working how said its awesome

  17. saravanan

    on April 5, 2010 at 7:01 am

    please explain how to use this code pls give zip format help me

  18. Rodrigo

    on April 6, 2010 at 1:08 am

    Hey Emanuele. I’m hacing trouble understanding this code:
    spring1.SetMaxMotorForce(30+Math.abs(800*Math.pow(spring1.GetJointTranslation(), 2)));
    spring1.SetMotorSpeed((spring1.GetMotorSpeed() – 10 * spring1.GetJointTranslation()) * (5)/Constantes.RATIO);
    spring2.SetMaxMotorForce(30+Math.abs(800*Math.pow(spring2.GetJointTranslation(), 2)));
    spring2.SetMotorSpeed( -4 * Math.pow(spring2.GetJointTranslation(), 1));

    I changed the density of my car and the torque applied to the wheels… and they started dancing all over the place when going to fast. Any ideas?

    Rod

  19. drobs

    on April 6, 2010 at 3:57 pm

    very nice tutorial, has helped alot, but I also have the same problem as eanjo.
    have been looking around the web for a few days now and just can’t find it ..

    so if someone could help me out, it would be greatly appreciated.

    drobs

  20. Physics Test

    on April 25, 2010 at 2:37 am

    […] The engine comes with the ability to use a a flash physics engine called Box2D, which can do some really cool shit. I made it my mission to learn how to do […]

  21. Rodrigo

    on May 17, 2010 at 3:53 am

    I don’t think I’m doing this right. I took the topdown simulation and created a new project on FlashDevelop. It worked like a charm, except for one thing: The car dances all over the place. I mean, really.. I steer left and accelerate, and it goes like right and starts spinning arround the main body’s mass center.

    I think the problem is in killOrthogonalVelocity. Any ideas?

  22. Indy

    on June 29, 2010 at 12:24 am

    Hi,

    Great tutorial. Any advice on how you would handle allowing the car to skid a little on different frictional surfaces?

    Regards

    i

  23. Indy

    on August 17, 2010 at 1:47 am

    Hi,

    Looking at the side car with 2 wheels, I dont see anything in the code which makes the axles appear as they do. i.e. they appear to be 2 shapes per axel, with one cylinder moving inside another cylinder? All I can see in the code is one rectangle formed as an oriented box – per axle.

    Any ideas?

    Regards

    i

  24. Mike

    on August 24, 2010 at 7:33 am

    I’m getting the same issues as eanjo.

    1046: Type was not found or was not a compile-time constant: Input.
    1180: Call to a possibly undefined method Input.
    1120: Access of undefined property FRateLimiter.

    Any body know how to fix this. Thanks!

  25. Mike

    on August 25, 2010 at 5:32 am

    Does any body know what my errors are? (read comment above) I’m in Flash CS5 running Box2d 2.0.2

  26. Randomman159

    on September 11, 2010 at 7:20 am

    I am also getting these errors, and i went through half a dozen different versions of Box2d. The one with the least errors were the Box2d 2.0.*, so basically what you are using. To get rid of the errors i just removed the FRateLimiter line of code, and replaced all the ‘input’ with a class i made, but you could simply have boolean values for whether keys are pressed, and check those booleans (instead of checking through a class).

  27. vikram

    on October 28, 2010 at 8:08 am

    Really Nice Emanuele! Your tutorials are really helpful for the freshers who want to enter into the gaming field. I am a live example for this. Actually I learned a lot from your tutorials. Your tutorials made me win my first interview.

    I have a small problem now! I am creating a dirt bike type game. I created the bike and some platforms. I created a bridge. When the bike is moving on the bridge, it just going into the bridge after traveling through 2 links.

    I don’t know why it is happening. Can you please help me out!

    Thanks in advance…..

  28. lacas82

    on October 31, 2010 at 8:30 pm

    How to do this lines in java?:

    var sidewaysAxis = targetBody.GetXForm().R.col2.Copy();
    sidewaysAxis.Multiply(b2Math.b2Dot(velocity,sidewaysAxis))

    Theres is nothing R.col2 in there…

  29. Cocos2d Box2d Car | Applausible Blog

    on November 23, 2010 at 11:22 pm

    […] ported this Emanuele Feronato Flash ActionScript example to Cocos2d for the […]

  30. Ron Rejwan

    on December 29, 2010 at 7:13 pm

    Hi great work!

    Quick question, in order to synchronize this simulation over network, which variables do I need to send over to my clients? :)

  31. corporalik

    on January 13, 2011 at 12:51 am

    Hi,
    please, is there a simplified version of top-down car? this sample is too hard for newbie.
    Thanks in advance

  32. Drakon - place » Box2D bike

    on January 22, 2011 at 2:10 pm

    […] I have found some nice tutorial of making old style bike game with box2d physics engine. It was made in flash version of it by Emanuele Feronato […]

  33. iAN

    on February 16, 2011 at 8:08 pm

    GetXForm() is replaced by GetTransform() in 2.1a

  34. Woodrobot

    on February 17, 2011 at 11:50 pm

    A great starting point! The side view truck game is great!
    There are not a lot of articles on skinning and matching scaling, but I have figured it out.
    I have added editable vehicles and track and am working on scoring and sound. Lots of fun.
    The prismatic joints sure are finicky and the whole update camera using velocity thing never worked out for me, so I used the location of the vehicle as my offset for all layers. Torque had to be increased to 50 to get over the big hills and make actual jumps and if you put a tall skinny rectangle at each end of the main body rectangle it will not end up on it’s back as much.

  35. NEVENA ALEKSIEVA

    on March 19, 2011 at 2:20 pm

    Hi Emanuele, great tutorials, I’m an actionscript developer and I’m doing my masters degree at the moment. We have an asignment (coursework) with the original Box2d engine (written in C++), so I decided to use the second example as part of the coursework, rewrote it from AS3 to C++, used the testbed and it does not look right, axles are not fitting within the cart properly, I could email an snapshot if it will help. Thanks

  36. NEVENA ALEKSIEVA

    on March 19, 2011 at 4:37 pm

    ps – I know it has to do with flash coordinate system being upsidedown, do I then have to scale all graphics.y with -1?
    Cheers

  37. Philippe

    on March 20, 2011 at 7:20 pm

    Hello Emanuele,
    First thanks for all the good work.
    I just posted an updated version of the top-down car you had made with version 2 on the box2d forum,
    the car does not move!
    I guess I just forgot something essential, but I don’t see what?
    Would you please have a try.
    (source code is for flashdevelop, should be easy to compile and run),
    then please feel free to use it for an update of this post.
    (I’m using this to drive a car inside a flat 3d environment).
    Thanks,
    Philippe

  38. Philippe

    on March 21, 2011 at 2:27 pm

    Found solution,
    I had forgotten the fact you said that dynamic bodydefs have to be declared as such explicitely, (type=b2Body.b2_dynamicBody).
    I have posted the corrected working code on the Box2D forum thread.
    Thanks,
    Philippe

  39. Bob

    on March 26, 2011 at 3:38 pm

    Hello dear friend.I have this mistake;
    1046: Type was not found or was not a compile-time constant: Input.
    Help me please.Regards Bob.

  40. aitken85

    on April 7, 2011 at 5:35 am

    In the update function, what do the numbers represent that are passed into these two methods:

    spring2.SetMaxMotorForce(...);
    spring2.SetMotorSpeed(...);

    My car must be a lot heavier, as your current values don’t allow my “springs” to push back up. Just wondering if there’s easy way to find out what values I should use instead trial-and-error x1000.

    Cheer, Chris.

  41. Couch Multiplayer | Emotely Blog

    on April 28, 2011 at 8:19 pm

    […] codenamed 3D API for Flash Player and Adobe AIR).    Physics/Collision [11] Two Ways to make Box2d Cars This entry was posted in Uncategorized. Bookmark the […]

  42. Leo

    on June 26, 2011 at 10:52 pm

    Great Grat tutorial Emanuele. Stavo cercando di contattarti tramite email ma non funziona il bottone contact.

    Ciao

  43. Muhammad

    on August 1, 2011 at 6:33 am

    very interesting, we can rock in flash.

  44. Hardik

    on August 15, 2011 at 9:20 am

    Hello Sir
    Thanks for such a good post.
    I want the same thing but in cocos2d with box2d.I dont want to use flash.
    Can you help me with the same working model

  45. Silver Moon

    on October 6, 2011 at 5:13 am

    Hello

    I have few questions , regarding the first example of a car :

    1. Why does the car stop moving when up/down button is released. Since ApplyForce is being used , isnt he car supposed to keep moving once its starts moving ?

    2. What is keeping the wheels attached to the car. When car gains speed , the wheels dont hang out of the car, how is this being done ?

    Regards
    Silver

  46. Sohan

    on November 3, 2011 at 7:36 am

    great tutorial,

    I have ported this code in iphone,but my wheels are not moving when I accelerate.

    if I remove the lines

    (Spring1)->SetMaxMotorForce( );
    (Spring1)->SetMotorSpeed();

    (Spring2)->SetMaxMotorForce( );
    (Spring2)->SetMotorSpeed();

    it works,but not as smooth as it runs here,can you tell me where I am going wrong and what are actually these parameters effects.

    Thanks In Advance!

  47. Dhivakar

    on November 15, 2011 at 2:20 pm

    Hi Emananuel,

    Ur work here is amazing, in the second example the truck goes upside down when i cross the obstacles. do u have any idea how to have a truck or a car in 2D side scrolling game which doesn’t go upside down when it cross an obstacle?

  48. davidp

    on January 24, 2012 at 2:02 pm

    thanks, very useful tutorial :)

  49. Eliya

    on March 1, 2012 at 10:24 pm

    Emanuel

    My work web security is warning me that your site contains malicious code. This happened on my blog as well, you should check your site to make sure you haven’t been hacked, and install a security plugin.

  50. Davina

    on May 10, 2012 at 4:33 pm

    Hi Emananuel,

    I’m having a problem… What box2d version is this tutorial using? Because the version I am using doesn’t have b2XForm… What’s the alternative in the newer version?

    Thank you.

  51. 2D Bilspel i Android (hjälp gärna till att färdigställa)

    on June 2, 2012 at 1:22 pm

    […] tack till Emanuele Feronato för det exemplet du skrev om hur man använder box2d för att göra en bil med bra […]

  52. Shekhar Suman

    on June 18, 2012 at 6:28 pm

    Does anybody know what does this line do…

    var sidewaysAxis = targetBody.GetXForm().R.col2.Copy();

    Please Help!!

    btw Great Tutorial.

  53. Top-Down Car using libGDX and Box2D » Level 1 Gamer

    on October 24, 2012 at 11:12 pm

    […] (a JavaScript game dev library) and Box2D (a popular 2D physics engine for games). Based on this earlier example, the car was built for a cool racing game called Bandit Racer. The source code for the whole game […]

  54. Jrog

    on November 6, 2012 at 10:27 pm

    The side-view vehicle code appears to be copied in its entirety from a 2008 post on the Box2D forum entitled “box lying on cycle jitters”:
    http://www.box2d.org/forum/viewtopic.php?f=8&t=1669

    There’s nothing wrong with building on the work of others, but simply copying and neglecting to give credit is poor form.

  55. PDM

    on November 11, 2012 at 8:07 am

    Hi emmanuele,

    I’m using Box2d 2.1a and I made a side view car using techniques in this post.
    Everything looks fine, but when it comes to applying torque to the car some problems occur.

    * it takes too long to start spinning and when it spins , can’t stop.
    (there is no setMassFromShapes() function in Box2D 2.1a, I wonder whether this could be the problem)

    * when I use the world.clearForces() the car doesn’t spin at all.

    please help me to solve this problem emmanuele!

  56. vkreal

    on January 11, 2013 at 1:40 am

    PDM,

    Did you figure out your issue?

  57. Tyler

    on January 21, 2013 at 6:59 pm

    Do you think a game like this is possible with Stencyl ?

  58. PDM

    on February 16, 2013 at 3:52 pm

    No vkreal, couldn’t find a solution.

  59. PDM

    on February 16, 2013 at 3:56 pm

    It seems too much inertia.

  60. Introduction to Box2D Physics Engine | Surya's Blog

    on May 8, 2013 at 7:44 pm

    […] Top-Down view Car (http://www.emanueleferonato.com/2009/04/06/two-ways-to-make-box2d-cars/) […]

  61. [2D??] ??????box2d??????????? - ??????? - ?????

    on May 11, 2013 at 3:52 am

    […] ??1?(forgotten)? http://www.emanueleferonato.com/2009/04/06/two-ways-to-make-box2d-cars/  ???? […]

  62. Flash Game Development Inter-web mash up: April 14, 2009 « 8bitrocket.com

    on August 13, 2013 at 3:23 am

    […] we all wish we were, Emanuele has a collection of new content to peruse. My favorites are this Box2D car simulation, The Official Facebook Flash API, and Ryan's Guide to Mochi Self Serve Ads. Plus, until Obama fixes […]

  63. Marius

    on August 26, 2013 at 4:15 pm

    Hi,
    i want to make a sideviewed racing game in javascript and canvas. your second tutorial is basically what i want to do but in javascript. it would be an nice base for me so what do i have to do to convert your actionscript in javascript to use it with box2dweb? im not familiar with actionscript. my main problem is the typecast at spring1. Hope you can help me.

    PS: Sorry for my bad English.

  64. Vaughan

    on September 6, 2014 at 4:13 pm

    Thanks so much, superb example and exactly what we’re after…in Nape though. Do you have any recommendations of how to do this using Nape – have tried everything but can’t quite map this example to its joints. Or perhaps you might do a Nape example sometime :)

  65. Gamer

    on December 2, 2014 at 8:09 pm

    Wow, I’ll have to add Box2d to some of my games! I’m impressed with how much you can achieve with so little code.

Thank you for the download!!

I hope you will find it useful and make something interesting out of it

To keep up to date with the blog, why don't you like my Facebook page and follow me on Twitter?

Want to learn more? Don't miss this:

Learn how to make a successful commercial Flash game from a real world example: get the fully commented source code of Globez, a Flash game played millions of times which generated a four figure income. Limited copies available.

Get it now

×