Vertical Shmup - Part 6 - Killing Aliens
The basic game mechanics have started to take shape so now we'll tackle killing the aliens, first, we'll create a new Sprite for enemy explosions, something like this:
Next, we'll write some code for the Explosion, I'm going to use Sprite Type 6 for explosions:
EVENT SPRITETYPE6 ANIMATE ; regular amination IF FRAME = 4 ; are we on the last frame? IF DIRECTION = 0 ; was enemy hit by a torpedo? REMOVE ; yes, remove this sprite SUBTRACT 1 FROM S ; decrement the sprite counter ENDIF ENDIF
This will remove the explosion once it reaches the last frame, and reduce the number of on screen sprites.
Now, we'll add in some collision detection code into to our Alien sprite event (type 2) Add the code below to the bottom of your Sprite Type 2 event:
; COLLISIONS ; =================== IF COLLISION 1 ; if hit by a torpedo OTHER ; switch to the torpedo IF DIRECTION = 1 ; is it unexploded? LET DIRECTION = 99 ; explode the torpedo ENDIF ENDSPRITE ; return to this sprite LET TYPE = 6 ; switch it to the explosion type LET IMAGE = 4 ; and the explosion image LET FRAME = 0 ; reset it to first frame LET DIRECTION = 0 ; this is an alien exploding ENDIF
This does two things when a collision between a torpedo and an Alien is registered:
1) it tells the torpedo to explode
2) it switches the Alien to the Alien Explosion Type and Image
Let's build and test:
Cool, now we can shoot them!
Although, I can see one obvious flaw, notice how nothing happens when our player spaceship collides with an Alien, we need to fix that so both the Alien and the Player explode.
Head back to your Alien Event (type 2) and add the following code to the bottom:
IF COLLISION 0 ; if enemy and player collide LET TYPE = 6 ; switch it to the explosion type LET IMAGE = 4 ; and the explosion image LET FRAME = 0 ; reset it to first frame LET DIRECTION = 0 ; this is an alen exploding OTHER LET TYPE = 6 ; switch it to the explosion type LET IMAGE = 4 ; and the explosion image LET FRAME = 0 ; reset it to first frame LET DIRECTION = 1 ; this is the player exploding ENDSPRITE ENDIF
Now both will explode when the two ships collide.
We're making some decent progress here, but there's still lots to do, however, before I go any further I think we've got a gameplay decision to make.
NEXT: Part 7 : A Gameplay Decision