Quick Switch Flash game prototype made with Box2D

Emanuele Feronato Actionscript 3, Box2D, Flash, Game design

A simple and addictive game which is interesting to deconstruct is Quick Switch. Use your mouse to hover over and activate platforms to guide your ball to the target.

In the making of this prototype, I’ll be using all body types Box2D allows me to use, so we have:

Static Bodies: will be used for platform which are always active

Dynamic Bodies: will be used for the ball

Kinematic Bodies: will be used for platform which need to be activated. If you don’t know what is a kinematic body, read understanding Box2D kinematic bodies.

To simplify the process of level design, I will start from the project basic Box2D editor using Flash movieclips.

So this is the final script:

And this is the result:

Hover the mouse over purple platform to make them solid and drive the ball into the green goal.

Now, let’s see the interesting part of this script, which is update function:

Line 85: looping through all bodies

Line 86: now it’s time to make different things according to body type

Lines 87-92: it’s a dynamic body (the falling ball): I just put it in its starting place if it falls down the stage

Lines 93-97: it’s a kinematic body (an activable platform): I turn it into a sensor. It’s the best thing to do to make it “transparent”. It does not react to collision.

Line 100: Now it’s time to check for mouse position and check for bodies under the mouse with queryCallback function.

This function simply scans for all fixtures inside the body under the mouse and does not make them sensors anymore.

And that’s it.

Download the source code.

Want to learn more? Learn by example!

Get the full commented source code of an actual commercial cross platform HTML5 game!!

Comments 2

  1. Pingback: Quick Switch Flash game prototype made with Box2D – Emanuele Feronato « eaflash

  2. Pingback: Quick Switch Flash game prototype made with Construct2 - Emanuele Feronato

Leave a Reply

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