LES 2: Zwaartekracht gebruiken en springen DOEL: Met het programma Stencyl zwaartekracht gebruiken om te kunnen springen. Start Stencyl Open het zelf gemaakte spel De Krokodil uit Les 1 Zoals je ziet is er onder de krokodil nog niets om op te landen. Als we zwaartekracht willen gebruiken moet dit als eerste geregeld gaan worden. We hebben hiervoor een zogenaamde Tileset (tegel-set) nodig. Open StencilForge download vanuit Tilesets (links) de Grass Land Tileset Je ziet nu een nieuwe tabblad met alle Tiles (tegels) die je kunt gaan gebruiken Sluit de tabbladen Grass Land Tileset en StencylForge en ga naar tabblad Level 1 In de rechter kolom kun je nu een tabje Tiles selecteren, je ziet hier nu de Tileset. Selecteer het eerste blokje (gras) in de tileset Je kunt nu met de muis een grasmat tekenen onderaan in het level zoals hieronder Nu kunnen we de zwaartekracht aan gaan zetten
Zwaartekracht (Gravity) instellen In het tabblad van het Level kun je de zwaartekracht instellen Open Level 1 en kies hier het onderdeel Physics (midden bovenaan) Bij Gravity > Vertical vul je 85.0 in en klik ook op Down Met 85.0 heb je ongeveer de zwaartekracht vergelijkbaar met de echte wereld. Test de game (recht bovenaan) Vind je dat de zwaartekracht goed werkt? Waarschijnlijk niet, er moeten een aantal zaken aangepast worden zodat het beter gaat werken. Allereerst moet iets veranderen aan de eigenschappen van de Krokodil Open onder Actors de Krokodil en ga naar het tabje Events In les 1 hebben we hier gezegd dat de y-speed 0 (nul) moest zijn, oftewel de krokodil mag niet verticaal bewegen. Dat is nu niet meer het geval, dus haal deze regel ertussenuit! Test de game weer en de krokodil valt nu netjes op de grond. Alleen als je nu op het pijltje naar beneden druk verplaatst de krokodil naar een willekeurige richting, dat willen we niet. Haal dus ook de regels voor de pijl naar beneden uit het programma en test de game weer. Nieuwe regels De krokodil valt nu netjes op de grond en kan naar links, naar rechts en kan ook springen. Er is alleen nog een ander probleem, als je snel achter elkaar springt dan gaat de krokodil steeds hoger, hij vliegt als het ware. Dat kan soms de bedoeling zijn, maar in een normaal platformspel wil je dat hij eerst weer op de grond komt voor je opnieuw kunt springen. Dat gaan we er nu bij programmeren: dus alleen als de krokodil de grond aanraakt dan mag hij springen.
Om dit netjes te doen splitsen we eerst het event Krokodil bewegen op in twee verschillende events: 1. Krokodil links en rechts 2. Krokodil spring Volg de volgende stappen om dit te doen: Klik met rechts op Krokodil bewegen Kies voor Duplicate (=kopie maken) Je ziet nu twee events staan Klik met rechts op het eerste event en kies voor Rename Noem dit event: Krokodil links en rechts Noem het 2 e event: Krokodil spring Nu moeten de programma s voor beide events aangepast worden zoals hieronder: Bij event Krokodil links en rechts blijven alleen de bewegingen naar links en rechts over, je hoeft hiervoor alleen regel voor omhoog weg te halen Bij event Krokodil springen moet je even goed opletten. De eerste regel mag weg en ook de regels voor links en recht. Alleen de regel voor springen (up) blijft, maar moet in een if-functie zoals hieronder:
Test de game voor de zekerheid even of die nog goed werkt. Alles in orde? Ga nu verder om het springen aan te passen zodat dit alleen vanaf de grond kan. Om te bepalen of de krokodil de grond aanraakt moeten we gebruik maken van Attributes, of in het Nederlands Variabelen. Een attribute kun je voor verschillende zaken gebruiken, bijvoorbeeld om de score van een game bij te houden of het aantal verzamelde diamanten. In dit geval houden we bij of de grond wel of niet wordt aangeraakt, dit doen we met een zogenaamde Boolean. Wat is een Boolean? Bij programmeren is een Boolean een datatype met slechts twee mogelijke waarden: true (waar, ja) en false (onwaar, nee). We gaan dus bijhouden of de krokodil de grond raakt (true) of juist niet (false). Volg de stappen hieronder maar, hopelijk wordt dan duidelijk hoe dit werkt. Ga hiervoor weer naar het tabblad van de krokodil en kijk aan de rechterkant van het scherm. Klik Attributes Kies Getters (To Get = Ophalen) Klik Create an Attribute Noem het RaakGrond Kies bij Type: Boolean Klik op OK Klaar, je hebt nu een Attribute gemaakt Naast Getters zie je Setters. Als je hier op klikt zie je dat hier al een blokje staat waarmee je RaakGrond een waarde kan geven. Als je wilt weten of de krokodil de grond raakt dan gebruik je dit blokje. Wat je nu moet doen is een nieuw event aan de krokodil toevoegen: Kies Add Event > Collision (botsing) kies je Member of Group (lid van groep). Stel het blok als volgt in: o When Self (=zelf, dat is de krokodil zelf dus) o hits an actor of Tiles (dus als hij één van de Tiles raakt, want de grond is gemaakt van Tiles) o Nu plaatsen we vanuit de Setters het blokje set RaakGrond to erbij o In het lege vakje kiezen we de waarde True bij Comparison (=vergelijken) Om goed overzicht te houden kun je het event Actor- Group nog hernoemen naar Op de grond Zolang de krokodil de grond aanraakt staat RaakGrond dus op true!
Nu kun je ervoor gaan zorgen dat de krokodil niet nog een keer springt zolang hij in de lucht is. Dit doe je in het event Krokodil springt. Je moet hier niet alleen checken of de Up-knop is ingedrukt, maar ook of de krokodil de grond raakt, oftewel RaakGrond moet true zijn. Volg de onderstaande stappen: Haal het groene blokje up is down even uit de if-functie Pak onder de categorie Flow onder Booleans het blokje and Zet up is down in het 1e lege veld Pak onder Comparisons het blokje anything = anything en zet dit blokje in het 2e lege veld Bij het = bokje staan nu ook twee lege velden In het 1e lege veld zet je de Getter RaakGrond en in het 2 e de Boolean true Het gehele blok plaats je nu terug in de if-functie Nu moeten je er nog wel voor zorgen de RaakGrond veranderd naar false (onwaar) zodra de krokodil springt. Dat doe je als volgt: Voeg daarom onder set y-speed to -20 for self het Setter set RaakGrond to false toe. Het gehele event Krokodil spring ziet er nu als hieronder uit: Als je de game nu uittest dan werkt alles hopelijk goed. Misschien vind je het sprongetje een beetje zielig. Dit kun je veranderen door de y-speed te verhogen naar bijvoorbeeld -40 of nog wat hoger als je dat wilt. Fantastisch gedaan! Je hebt nu een Game met zwaartekracht gemaakt waarin je kunt springen