|
TUTORIAL: Building games in Flash 5
Part3: Enemies and collisions.
Author:
David Doull
Date: 11/04/01
Download source files: tut3.zip
Step 1: Creating
something to fire at!
First we are going to create some enemy
spaceships to fire at.
On the main Timeline create a new layer
and call it enemy.
On this new layer draw an enemy spaceship. Select the enemy
spaceship, choose Insert and Convert to Symbol (or F8) and
make your enemy a movie clip.
Select this enemy movie clip and in the
Instance panel set the movie clips name to enemy1
(as shown below).
If you don't want to draw the enemy spaceship
you can download this fla; tutorial3_parta.fla,
with this step already done for you.
The enemy spaceships:
Our game is going to follow a typical
space shooting game structure. The enemy spaceships are going
to move across the stage from right to left. The player will
need to either dodge or shoot the enemies. If the player shoots
an enemy it will explode. If an enemy collides with the player
the game will be over.
We will use duplicateMovieCip to create multiple enemy ships.
Random start locations
Our enemies are going to start just to
the right of the screen and move left. However if all the
enemies started at the same location the game would be very
easy and boring. We need to introduce a random element to
the game. So all the enemy spaceships will start at the same
x-position (to the right of the stage) but will each have
a random y-position.
We will also make the enemy speed random,
to add an extra challenge to the game.
Lets code
So we want to write code for setting
up a random start position and speed for our enemy spaceships.
To do this we are going to use something called a function.
If you already know about functions you can skip the next
three paragraphs.
What are Functions?
Functions let you group together lines
of code. Often in game programming you want the same code
to be run in different parts of your game. For example, you
might want to increase the players score and play an animation
if they collect a bonus. You might want the exact same thing
to happen if they complete a level. You could write the code
for collecting the bonus and then copy and paste it to the
part of the game that handles completing a level. OR you could
write a function to increase the score and play the animation
and call the function whenever you wanted the score increase
and animation to happen. The code for a function looks like
this
function scoreBonus(){
// code goes here
}
This is known as
defining the function - it defines what the function
is called and what code makes up the function.
scoreBonus is the functions name. Any code contained
between the curly brackets will be run when the function is
called. 'Calling a function'
means running a function and is done in your code simply by
typing the function name. So the code scoreBonus();
will call the function resulting in the functions code being
run.
NB: Defining the function doesn't actually
run the functions code. The code is only run when the function
is called.
A reset function
We are going to create a function to
set up the start location and speed for the enemy spaceship.
Select the enemy movie clip and open
the actions window (Window > actions). Type the following
code:
onClipEvent (load) {
function reset(){
this._x=600;
this._y=random(200)+100;
enemySpeed=random(4)+1;
}
reset();
}
The code does two things, it defines
the function called reset
and then runs this function. The code is all within a load
clip event so it will be run when the movie clip first loads.
The line function
reset(){ defines the reset function. The next three
lines are the reset functions code.
The line this._x=600;
just sets the x-coordinate of the enemy spaceship to 600 (just
to the right of the stage).
The line this._y=random(200)+100;
sets the y-coordinate of the enemy to a random number between
99 and 299. random is a
function that is built into flash - what it does is to create
a random number between zero and 'one less than the number
contained within the brackets'. eg: random(3) will create
a random number between 0 and 2 (either 0, 1 or 2). We add
100 to the random number to ensure that the y-coordinate isn't
at the very top of the stage.
enemySpeed=random(4)+1;
sets a new variable called enemySpeed
to a value random between 1 and 4. This will be the number
of pixels that the enemy moves per frame.
Finally the line reset();
calls the function - which runs the code we defined above.
You might wonder why we bothered to create
the reset function and then to just call the function right
after we defined it? We could have just written the three
lines of code and left out the function definition altogether.
Well in the next step you will see that we also want to call
the reset function elsewhere in our code.
Next >>
|