![]() |
Pagina 5 van 13
Scrollende eilanden
Om het gevoel van beweging te versterken voegen we een aantal eilanden toe. Een makkelijke manier zou een grotere achtergrond maken en daar eilanden aan toevoegen. Het nadeel hiervan is dat eilanden op een voorspelbare manier verschijnen, die de speler merkt. (Je hebt misschien cartoons gezien waar een herhalende achtergrond achter de speler is.) We hebben dus een iets ingewikkeldere benadering nodig en voegen de eilanden toe als objecten. Dus allereerst, maak de drie sprites met de volgende afbeeldingen (je kan dit makkelijk doen door de afbeeldingen in het Game Maker venster te slepen en dan "Sprite" te selecteren):
![]() ![]() ![]() Aangezien we ze nooit voor collision checking zullen gebruiken, is het het beste om Precise collision checking (precieze botsingdetectie) uit te schakelen. Dit zal de game lichter maken voor de computer om te draaien. Voor elk van de eilanden maken we een object aan. In het create event gaan we een verticale snelheid toevoegen die even snel is als de scrolsnelheid van de achtergrond. Op deze manier ziet het uit alsof de eilanden deel van de achtergrond zijn omdat ze op dezelfde positie in de zee blijven. Om zeker te weten dat alle objecten boven de de eilanden weergegeven worden geven we de eilanden een Depth van 10000. (Je moet Game Maker in geavanceerde modus (advanced mode) hebben staan - dit kun je verandere in het File (bestand) menu als je de 'Simple mode' gebruikt.) Instanties (instances) van objecten worden weergegeven op volgorde van depth. De instanties met de hoogste diepte (die dus het diepste liggen) zullen het eerst getekend worden. Instanties met een lagere diepte worden daar dan overheen getekend. Dus door eilanden een hogere diepte te geven zullen ze altijd als eerste gedrawd (getekend) worden en dus onder are andere objecten liggen. Er moet nog iets gebeuren. Als de eilanden verdwijnen aan de onderkant van het scherm willen we dat deze weer verschijnen aan de bovenkant van het scherm. Hiertoe voegen we in het Step event van de eilanden een test toe om te kijken of het eiland al onder het scherm is. Als dat zo is zal het dus weer verschijnen aan de bovenkant. Merk op dat de variabele y de verticale positie van de instantie bevat (een waarde van 0 is de bovenkant van de room!). De variabele room_height (room hoogte) geeft de hoogte van de room aan. De eilanden zullen dus aan de onderkant verdwijnen als de y groter is dan de room_height. We kunnen dus een actie gebruiken om te controleren of het eiland onder de hoogte van de room ligt: ![]() Zoals je ziet kun je als waarde (value) ook een variabelenaam gebruiken. Je kan zelfs volledige expressies gebruiken. Om te bewegen naar de bovenkant van de room gebruiken we de "jump to position" actie. Maar we willen naar een willekeurige positie boven de room springen, niet een specifieke. Door het kiezen van een willekeurige (random) positie is er minder gelijkmatigheid over waar de eilanden tevoorschijn komen. De speler heeft dus niet het gevoel dat de eilanden opnieuw verschijnen. Maar hoe stellen we een willekeurige waarde in? Hiervoor is de functie random(). Wat is een functie zou je je af kunnen vragen? Een functie berekent een waarde (of voert een actie uit) gebaseerd op de waarde van bepaalde argumenten. De argumenten worden tussen haakjes achter de functienaam geschreven (er hoeven trouwens geen argumenten te zijn, het kan er 1 zijn, maar het kunnen er ook meerdere zijn). Overal waar je waarden (values) kan intypen kun je ook variabelen en functies invullen (en expressies met daarin variabelen en functies). Er zijn veel functies in Game Maker. Maar voor nu hoeven we alleen random() te kennen. In de 'jump to position' actie gebruiken we random(room_width) als het x-coördinaat. Dit geeft het een willekeurige x-positie tussen de 0 en de breedte van de room, precies zoals we wilden. De spring naar positie-actie ziet er dus als volgt uit: ![]() We gebruiken –65 voor de y-positie zodat de eilanden volledig boven de room verschijnen. Door de verticale snelheid zal het weer in beeld schuiven. We moeten dit doen voor alledrie de eilandobjecten. Alles wat nu nog overblijft is het plaatsen van drie eilanden op verschillende plaatsen in de room, en we zijn klaar met onze scrollende achtergrond. Zelfs hoewel de eilanden op regelmatige momenten verschijnen, zal de speler niet opmerken dat ze hetzelfde zijn door de verschillende x-posities. Je had ook wat onregelmatigheid toe kunnen voegen voor het moment dat de eilanden verschijnen door een random getal af te trekken van het y-coördinaat. |