Pagina 10 van 13
Meer vijanden
In dit deel gaan we drie nieuwe typen vijandelijke vliegtuigen aan onze game toevoegen. Een zal kogels recht naar beneden schieten. De tweede zal kogels op het vliegtuig van de speler schieten. De derde zal niet schieten maar komt van de onderkant van de room en is daardoor moeilijker te ontwijken of raken. We zullen de vijanden in een later stadium van de game laten verschijnen.

Om het eerste nieuwe type vijandelijke vliegtuig te maken moeten we eerst een sprite aanmaken, vergelijkbaar met de sprite van de eerste vijand maar met een andere kleur. Ten tweede moeten we een nieuw object aanmaken. Omdat het object zich bijna hetzelfde zal gedragen als het eerste vliegtuig maken we een kopie van het eerste object (rechtsklik erop en kies Duplicate, een duplicaat ofwel kopie maken). Dubbelklik op het nieuwe object om het aan te passen. Geef het een nieuwe naam en stel de juiste sprite in. Omdat dit een moeilijker vliegtuig is zou de speler een hogere score moeten krijgen bij het neerschieten. Dus in het collision event met de kogel veranderen we de score naar 10.

We hebben een kogel sprite en kogel object nodig voor de vijandelijke vliegtuigen. Dit object zal in het create event een verticale snelheid krijgen naar onder. In het step event zorgen we er weer voor dat het verwijderd wordt zodra het onder de room komt. In het collision event met het hoofdvliegtuig zeten we de health relatief naar -5, verwijderen we de kogel en spelen we een geluid af.

We moeten het vijandelijke vliegtuig nu van tijd tot tijd kogels laten schieten. Dit doen we in het step event van het vliegtuig. We gebruiken de actie 'Test Chance' (die dobbelsteen) en geven als 'sides' 30 op. Dit betekent dat de volgende actie gemiddeld 1 keer per 30 steps uitgevoerd wordt (en aangezien de room-snelheid 30 steps per seconde is..). In het volgende event maken we de vijandelijke kogel.

Tot slot moeten we ervoor zorgen dat op enig moment de vijandelijke vliegtuigen verschijnen. Hiervoor gebruiken we het controller_enemy object weer. In het create event zetten we alarm1 op een waarde van 1000. In het alarm1 event maken we het vijandelijke vliegtuig en stellen alarm 1 opnieuw in op 500 om een beetje later nog een vliegtuig te maken. Dus dit eerste vliegtuig zal na 30 seconden verschijnen en daarna komt er een bij iedere 15 seconden.

In ons volgende type vijandelijk vliegtuig hebben we weer een nieuwe sprite en een nieuwe kogel nodig. We kopiëren het tweede vijandelijke vliegtuig object en, zoals hierboven, verhogen de score naar 20 in het collision event met een normale kogel.

We maken ook een tweede vijandelijke kogel object. Dit vijandelijke vliegtuig maakt dit type kogels aan in zijn step event. We gebruiken hier ook weer de dobbelsteen actie maar zetten het nu op 80, omdat de nieuwe kogels veel lastiger zijn te ontwijken.

Het nieuwe type kogel werkt als volgt. In het create event gebruiken we de actie om naar een positie te bewegen ('move towards a position'). Maar welke positie gebruiken we. Nou, we willen schieten naar het vliegtuig van de speler. Dus we willen de x- en y-positie van de instantie van dit object weten.

Dit kan makkelijk gedaan worden in Game Maker. Om een waarde van een variabele in een ander object te krijgen, zetten we de naam van het object en een punt voor de variabele naam. We gebruiken dus obj_myplane.x om het x-coördinaat te vinden van het vliegtuig. Als er meerdere instanties zijn zal het de waarde van de eerste instantie geven.

Als er geen instantie is van het object zullen we een errormelding krijgen. Dit kan een probleem voor onze game zijn, omdat wanneer het vliegtuig vernietigd is zal er tijdelijk geen vliegtuig zijn. Dus we moeten controleren of er wel een vliegtuig is. Er is een actie die kan tellen hoeveel instanties er van een bepaald object zijn. We gebruiken dit om te controlere of ons vliegtuig aanwezig is en, als dat zo is, richten we de kogel op het vliegtuig. Anders zal de kogel recht naar onder gaan. Het create event ziet er dus als volgt uit:

De actie om naar een bepaald punt te bewegen (move towards a point) heeft nu de volgende waarden:

Nog een andere aanpassing is nodig. Omdat de kogel in elke richting kan vliegen is het wat lastiger om in het step event te controleren of de kogel buiten de room is. Maar eigenlijk is hier een speciaal event voor: het Outside event ('buiten'). In dit event kunnen we simpelweg een actie neerzetten om de instantie te verwijderen.

Tot slot moeten we ervoor zorgen dat het nieuwe type vliegtuigen ook verschijnt. Zoals hiervoor al aangegeven gebruiken we het controller_enemy object hiervoor. In het create event zetten we alarm2 op 2000. In het alarm event maken we het nieuwe type vliegtuigen aan en zetten alarm2 weer op 1000 om even later een nieuw vliegtuig te maken.

Dit maakt het derde type vliegtuig af. We moeten alleen de vliegtuigen nog van onder af aanmaken. Dit kan op exact dezelfde manier gedaan als het eerste vijandelijke vliegtuig, behalve dat het vliegtuig onder de room start en dan naar boven beweegt in plaats van naar onder. Het controller_enemy object maakt ze aan, dit keer met alarm3. Je zou nu moeten weten hoe dit moet, maar je kan ook in het spel kijken.

Hiermee is onze vierde versie van 1945 af. Het is nu een speelbaar spel dat steeds moeilijker wordt. Het is eigenlijk zelfs leuk om het te spelen en proberen de hoogste score te halen.