|
|
Search Tutorials
Let's write the code to detect the collision between the lasers and the enemies. Open up the actions window for the laser (select the laser and choose Window> Actions). The code for the lasers enterFrame onClipEvent should currently be: onClipEvent (enterFrame) {
this._x+=laserMoveSpeed;
if (this._x>600){
this.removeMovieClip();
}
}
between the two curly end brackets type the following code: for (i=1; i<=_root.numEnemy; i++){
if (this.hitTest( _root["enemy"+i])){
_root.score+=100;
_root["enemy"+i].gotoAndPlay( 2 );
}
}
This code checks to see if this laser movie clip is colliding with any of the enemy spaceships. It uses a for loop to check if this laser is colliding with each one of the enemy movie clips. If this is true it increases the score by 100 and tells the associated enemy to goto and play its frame 2. The first line sets up a for loop. As explained before a for loop is a loop that repeats the code between its {}'s a set number of times. In this case the loop will repeat three times (as the value for _root.numEnemy is 3), and each time it repeats it will increase the variable i by one. The second line is an if test. It checks to see if this movie clip (i.e.: the laser) is colliding with a movie clip specified by the code _root["enemy'+i] As explained back in tutorial one, this is array style referencing for a movie clip. So when i is equal to 1 then _root.["enemy'+i] will evaluate to _root.enemy1 when i is 2 it will evaluate to _root.enemy2 and so on. If the hitTest is true then the next two lines are run.
These lines actually deal with some things we will set up in the next step.
Now, before we leave the laser we are going to do one more
thing. So what happens to the original laser? We'll it cant be removed so it keeps moving to the right for ever. That seems a bit untidy, so we are going to add in an if statement which ensures that the original laser does nothing and only the duplicates fly across the screen and collide with enemies. Exactly under the line onClipEvent (enterFrame) { add the
code: NB: you might not have seen <> before. It means NOT EQUAL TO, so our if statement will run the code if the lasers name is not equal to laser. In other words the code will be run if the laser is called something other than laser, such as laser2 or laser3.
|
||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||
|