Collision Detection with Flash MX
Action games and arcade games all require that you have a character that, at some point, has to hit or collide with another object on the stage. This is referred to as collision detection: the ability for Flash to know when two or more objects hit each other. Flash has several tools that allow you to control object collision. In this article you will learn the following:
What collision is and how to use it
How to build game pieces to collide with each other
How to add effects to objects that collide with each other
How to use the hitTest method
How to define physical boundaries to a game
How to develop complex worlds in which game sprites can collide with many objects
Collision detection is all about the detection of objects and boundaries on the stage. In this article, you learn about collision detection used on my favorite game: BreakOut.
Almost always the first element you need to be able to define when scripting a game is the physical area of the game. This allows you, the programmer, to define where play can take place. For a marble game, this prevents marbles from dropping off the edge of a board; in a role-playing game, you define the area of the campaign; and with an arcade game, you know where the asteroids are going to come from. To more clearly define border collision and objects in relation to a border, we will be using the classic arcade game BreakOut.
BreakOut is a 1976 classic that first appeared on Atari and then was cloned a thousand times over. It remains one of the true paradigm games and makes for the perfect example of boundary collision detection. The basic premise of the game is to bat a ball around a screen and hit blocks. Each block you hit is knocked out, giving you points. When all of the blocks are gone, you proceed to the next level. In our game, we'll assume that the player has three liveswhen all of the lives are gone, the game ends.
Area Detection: Where Can You Play?
The first step is to define where the ball will be bouncing. Our BreakOut game uses a movie size of 400px x 500px. This defines the size of the movie, not the area of the game. A ball can appear to bounce off the edge of the screen only if we tell the ball that there is an edge. This has to be defined programmatically with ActionScript.
The first scripts that will be added will be in Frame 1 of the movie. To add them, double-click on Frame 1 to open the Actions palette. Next, switch over to Expert mode by using the drop-down menu in the upper-right corner.
Now let's start out by creating a variable called GamePlayArea, with the values calculated in an array. It sounds complicated, but here's what it looks like:
GamePlayArea = [0, 0, 400, 500];
Essentially, you're telling Flash that the game covers an area 400px x 500px from the top-left corner of the screen. As you move through the ActionScript, you can reference the variable named GamePlayArea if you need to know the coordinates of the area of the game.