Step 5: Detecting a collision between the players spaceship and the enemy spaceships
So what happens when an enemy spaceship collides with the players spaceship?
At the moment nothing happens, it just passes through - which isn't very challenging. We are going to change things, so when the enemy collides with the player the game is over. We will add some code into the enemy1 movie clip to test if its colliding with the players spaceship and if this is true then main time line will move to a game over section.
So we have two things to do:
add the collision detection code into the enemy movie clip
and to create a game over section on the main time line.
Player / enemy collision detection
From the main time line select the enemy1 movie clip and open up the actions window (Window > actions).
At the end of the onClipEvent (enterFrame) code, just above the last end curly bracket } type the following code
if (this.hitTest( _root.spaceship ) ){
_root.gotoAndStop ( "gameOver" );
}
This is an if statement that checks if this movie clip (i.e.: the enemy) is colliding with the spaceship (in other words - if the bounding box of this movie clip is overlapping the bounding box of the player spaceship). If this is true, then the main timeline is instructed to goto and stop at the frame labelled gameOver.
Resetting after exploding
Before we close the actions window for the enemy1 movie clip we need to add an extra line to the reset function we created earlier.
We have set up the enemy movie clip to play an explosion
animation and stop on its empty frame 6 if it is hit by a laser. When it moves
off the left edge of the stage and is reset, it effectively becomes a new enemy
spaceship. Its the same movie clip, but for the player it seems like a new enemy
emerging from the right side of the stage. So we need to make sure that sure
that if it is was exploded that it is reset back to the first frame. All we
need to do is add the line
this.gotoAndStop(1);
as the last line of the reset function. This just ensures that when the enemy
is reset it is moved back to its frame 1. So the code for the reset function
becomes:
function reset(){
this._x=600;
this._y=random(200)+100;
enemySpeed=random(4)+1;
this.gotoAndStop(1);
}
| » Level Intermediate |
|
Added: 2001-05-04 Rating: 9 Votes: 517 |
| » Author |
| No details available. |
| » Download |
| Download the files used in this tutorial. |
| Download (416 kb) |
| » Forums |
| More help? Search our boards for quick answers! |
-
You must have javascript enabled in order to post comments.


Comments
There are no comments yet. Be the first to comment!