Hvordan man opretter kunstig intelligens til en fjende slime | hyperPad Documentation

Loading...

Logo
DocumentationVejledningerHvordan man opretter kunstig intelligens til en fjende slime
Vejledninger

Hvordan man opretter kunstig intelligens til en fjende slime

Last updated June 26, 2019

IMG_0139.TRIM.GIF

Note: En færdiggjort projektfil til denne tutorial findes bagerst i denne artikel.

Introduktion

I denne tutorial vil vi skabe kunstig intelligens (AI) til et overbevisende fjende slime til et platformspil. Vi vil dække nogle mere avancerede funktioner og adfærd i hyperPad, så denne tutorial forudsætter en grundlæggende viden om hyperPad editoren. Hvis du mener, du skal gøre dig bekendt med at lave et spil fra bunden, kan du først se Den Komplette Guide - Oprettelse af et Platformspil tutorial.

For at få slimet til at se "intelligent" ud, skal det gøre mere end blot at bevæge sig frem og tilbage, og det skal være lidt opmærksomt på sine omgivelser.

Lyder spændende! Men før vi går i gang, skal vi først detaljere, hvordan fjende slimet skal opføre sig:

  • I stedet for at gå, vil slimet hoppe til venstre eller højre for at bevæge sig.
  • Slimet vil hoppe i retning af spilleren.
  • Hvis spilleren er for langt væk, vil slimet ikke bevæge sig (idle).
  • Slimet vil tage spillerens sundhed ved kontakt.
  • Slimet besejres, hvis spilleren hopper oven på det.

Nu hvor vi ved, hvad vi vil gøre, lad os begynde!

Del 1: Projektopsætning

I denne tutorial vil vi starte et nyt projekt fra bunden for at holde tingene simple. Lav et nyt projekt og indstil det til "Side View", du kan lade de andre indstillinger være som standardværdierne.

Når dit nye projekt er oprettet, gå til Asset Library og hent "Platformer Starter Pack" fra hyperPad i assetbutikken. (Det er gratis!)

a7JUWwiO.jpg

Photo_2019-06-26__1_15_13_PM.png

Nu hvor vi har nogle aktiver at arbejde med, skal du placere nogle jordblokke og skabe din verden. Hvis du ikke allerede er der, skal du gå til Asset Library og trykke på "Downloads", derefter "Platformer Starter Pack".

I billedet nedenfor er nogle jordblokke ("Grass World"-mappen) blevet placeret, og et baggrundsbillede ("Backgrounds"-mappen) er blevet indstillet.

Photo_2019-06-26__1_16_22_PM.png

Nu hvor vi har en god scene at arbejde med, lad os tilføje Spiller og Slime objekterne. Gå til Asset Library og åbn din "Downloads"-mappe, derefter "Platformer Starter Kit"-mappen, hvis de ikke allerede er åbne.

Vi bruger "Green Spaceman" som spiller, så tryk på grøn spaceman aktiver for at se alle dets animationscykler. Som standard vil vi have, at spilleren blot står, så tryk på "Stand" animationen og placér den på scenen.

I den samme mappe i Asset Library er der også en "Slime Pink" animeret karakter. Perfekt til at bruge som en slime fjende! Tryk på slime aktiver og vælg "Move" animationen og placer en slime på din scene med din spillerkarakter.

Photo_2019-06-26__1_17_03_PM.png

Indtil videre, så godt! Vi har nu vores spillerobjekt og slimeobjekt klar til brug. Men hvis vi skulle spille vores projekt nu, ville vi ikke kunne interagere med spillet overhovedet. Så vi skal lave noget logik for at bringe liv til vores spil.

Del 2: Spillerkontroller

Før vi kan arbejde med at give vores slime fjende liv, skal vi først have nogle spillerkontroller til den grønne spaceman.

Tryk på den grønne spaceman og indstil dens fysikmode fra Wall til Physical, hvilket giver spilleren fri bevægelse. Tryk derefter på "Behaviors" knappen for at åbne Adfærd-redigereren for vores spillerkarakter, så vi kan tilføje nogle kontrolmuligheder.

IMG_0054.JPG

I adfærdredigereren for vores spillerkarakter burde du allerede se en ensom Play Animation adfærd. Vi kan lade den adfærd være som den er, men vi kan give den nogle venner.

Under Interaktion sektionen, placér et Joystick Controlled adfærd hvor som helst samt et Jump with Button adfærd. Med disse adfærd er vores spiller nu klar til at kontrollere. Men, den mangler lidt animation.

Tryk på Joystick Controlled adfærden og indstil "Joystick Left Animation" til "Walk" animationscyklussen i Green Spaceman aktivet. Gør det samme med "Joystick Right Animation"

Photo_2019-06-26__1_18_28_PM.png

Nu går vores spillerkarakter, men den animerer stadig ikke, når de hopper.

Tryk på Jump with Button adfærden og ændre både "Falling Animation" og "Jumping Animation" til "Jump" animationscyklussen.

Photo_2019-06-26__1_18_56_PM.png

Hvis vi spiller vores spil nu, kan vi bevæge os og hoppe rundt! Næste skridt, kan vi arbejde med vores slime fjende.

Photo_2019-06-26__1_19_50_PM.png

Del 3: Slimens bevægelse

Som vi detaljerede i introduktionsafsnittet af denne tutorial, ønsker vi at vores slime hopper mod spilleren. For at gøre dette skal vores slime vide, hvor spilleren er i verden. Derfor bør vi tilføje et Tag til vores spillerkarakter, så vores adfærd kan hente vores spillerkarakter i enhver scene.

Tryk på spillerkarakteren og vælg Tags fanen i bunden af egenskaberne. Skriv "Player" i tekstfeltet øverst i tagsmenuen og tryk på tilføj (+) knappen ved siden af det. Nu er vores spillerkarakter mærket med "Player" tagget.

Photo_2019-06-26__1_23_06_PM.png

Ligesom hvad vi gjorde med spillerkarakteren, tryk på slimet og sæt dens fysikmode fra Wall til Physics. Tryk derefter på Behaviors knappen for at åbne slimets adfærdredigerer.

IMG_0058.JPG

I adfærdredigereren, gå til Custom adfærd sektionen og placer et Timer adfærd ind i redaktøren.

Tryk på Timer adfærden og indstil dens interval til 2 sekunder.

Photo_2019-06-26__4_21_59_PM.png

Dette vil være starten på vores logik for slimens kunstige intelligens.

Idéen her er, at hvert 2. sekund "tænker" vores slime over, hvad den næste handling skal være, såsom: Skal slimet hoppe? Hvis det vælger at hoppe, hvilken retning skal det hoppe?

Næste, gå til Transform adfærd sektionen og placér et Get Position adfærd. Tryk på det og indstil dens mål til "Player" tagget, vi oprettede tidligere ved at trykke på Tags fanen i bunden af egenskaberne og vælge "Player". Forbind nu Timer til Get Position adfærden.

Photo_2019-06-26__4_22_22_PM.png

Nu ved vi, hvor vores spiller er i verden! For at bestemme, om spilleren er til venstre eller højre for slimet, skal vi også vide, hvor slimet er i verden, også.

Træk endnu en Get Position adfærd ind i redaktøren. Som standard målretter adfærden allerede vores slime, så vi behøver ikke at gøre noget andet end at forbinde den til vores logikgren. Gå videre og forbinde Get Positionen for spilleren til Get Positionen for slimet.

Photo_2019-06-26__4_22_40_PM.png

Valgfrit: For at gøre det lettere at forstå, har jeg omdøbt mine Get Position adfærd til klart at indikere, hvad de sporer: "Get Position Player" og "Get Position Slime". Dette er valgfrit, men hvis du også vil ændre adfærdnavnene, kan du gøre det ved at trykke på adfærden og trykke på dens navn øverst i egenskaberne.

Indtil videre har vi, at hvert 2. sekund henter slimet positionen af spillerkarakteren og sig selv. Nu hvor vi har de oplysninger, kan vi bestemme, om slimet skal hoppe til venstre eller højre.

Under Logik fanen, drop og forbind en Hvis adfærd. I dens egenskaber, indstil den første værdi til den første Get Position's ("Player" tag) x-position ved at trække adfærdens outputværdi ind i feltet i Hvis egenskaberne. For den anden værdi, indstil den til den anden Get Position's (slime) x-position. Endelig indstil Hvis adfærdsbetingelsen til "Er mindre end" (<).

Note: Et objekts x-position er den værdi, der repræsenterer, hvor objektet er i verden på sin x-akse. (Venstre og højre)

IMG_0061.JPG

Så hvad betyder alt dette? Hvis adfærden tjekker for at se, om spillerens x-position er mindre end slimets x-position. Hvis ovenstående er sandt, så udfører den den næste tilsluttede adfærd. Hvad dette i det væsentlige betyder, er, at hvis spilleren er længere til venstre end slimet, så fortsætter adfærdens udførelse.

Okay, nu har vi logikken indstillet til at få slimet til at hoppe til venstre, så lad os få slimet til at gøre netop det!

Under Fysik adfærd sektionen, drop og forbind en Apply Force adfærd til Hvis adfærden. I dens egenskaber, indstil kraften til: x = -0.5, y = 1. Så indstil multiplikatoren til et stort tal, 200 skulle være tilstrækkeligt.

Photo_2019-06-26__1_28_06_PM.png

Hvad vi har nu, er, hvis slimet finder spilleren længere til venstre end sig selv, vil det hoppe opad (y = 1 × 200) og lidt til venstre (x = -0.5 × 200).

Prøv det! Spil spillet og test for at sikre, at alt fungerer. Hvad du skal se, er slimet, der hopper til venstre hvert 2. sekund, så længe spilleren er til venstre for det. Hvis du flytter spilleren til højre for slimet, skal det stoppe med at hoppe, indtil du flytter til venstre for det igen.

Photo_2019-06-26__1_28_50_PM.png

Note: Hvis dit slime ikke bevæger sig, skal du gennemgå de tidligere trin for at sikre, at du ikke har misset noget. Sørg for, at adfærdne er korrekt forbundet, og at slime's fysikmode er indstillet til Physics (bevægbar) i stedet for Wall (ikke-bevægbar). Også, snart vil vi løse problemet, hvor slimet nogle gange kan flippe på siden eller op på hovedet.

Gode fremskridt indtil videre! Hvis dit slime hopper rundt som forventet, så er vi klar til at fortsætte. Lad os afslutte dens bevægelsesadfærd ved også at lade slimet hoppe til højre.

Tilbage i slimets adfærdredigerer, dupliker Hvis adfærden. Træk og snapp den nye Hvis adfærd til højre for den originale Hvis adfærd. Dette vil gøre det til en "Else If" adfærd.

Duplikere Apply Force adfærden også, og forbind den til den nye Else If adfærd.

I Else If's egenskaber, ændre betingelsen fra "Er mindre end" (<) til "Er større end" (>). Dette vil have den modsatte effekt af den første Hvis. Hvis den første Hvis adfærd ikke er sand, vil den derefter kontrollere, om Else If er sand i stedet. Det betyder, at hvis spilleren ikke er til venstre for slimet, vil det kontrollere, om spilleren er til højre for slimet, og fortsætte med at udføre adfærd, der er forbundet til Else If i stedet.

Du skulle nu have en adfærd gren, der ser ud som noget som dette:

Photo_2019-06-26__1_30_01_PM.png

I den anden Apply Force (under Else-If), ændre dets egenskaber, så kraften er x = 0.5, i stedet for x = -0.5. Nu, i stedet for at hoppe til venstre, vil slimet hoppe til højre.

Photo_2019-06-26__1_30_05_PM.png

Spil projektet og giv det et nyt forsøg! Nu skulle du se slimet hoppe i hvilken som helst retning spilleren er. Fremragende!

En ting, du måske har bemærket under afprøvning, er, at hvis du kolliderer med slimet, kan det nogle gange falde på siden eller gå op ned. Vi vil have slimet til at forblive opretstående, så lad os hurtigt fikse det.

Tilbage i slimets adfærdredigerer, gå til Transform adfærd sektionen og placer en Lock Rotation adfærd ind i redaktøren. Ingen grund til at forbinde det til en anden adfærd, vi vil have det til at låse sin rotation, så snart slimet er oprettet, så du kan lade det stå som det er. Når du har gjort det, skal du prøve spillet igen. Denne gang skulle du have en hård tid med at forsøge at banke slimet på sin side.

Photo_2019-06-26__1_32_26_PM.png

Du har måske også bemærket, at slimets animation afspilles for hurtigt. Hvis dette sker, skal du trykke på Play Animation adfærden i slimets adfærdredigerer og ændre Frames Per Second til et meget mindre tal. 6 frames per second ser ret godt ud.

Photo_2019-06-26__1_38_22_PM.png

Fint! Nu bevæger vores slime sig ikke kun godt rundt, men ser også fantastisk ud. Størstedelen af vores slimes bevægelseslogik er komplet.

Men vi ønsker også, at slimet kun skal hoppe, hvis spilleren er i nærheden. På den måde, hvis vi bygger en større verden, vil slimes, der er langt væk, ikke straks prøve at hoppe mod spilleren og angribe spilleren. I næste del vil vi kigge på at tilføje en anden betingelse for at blokere hoppinglogikken, hvis spilleren er for langt væk.

Del 4: Slimens Idling

I denne del vil vi implementere noget slimeadfærd, der vil få det til at idlet (det vil sige, ikke bevæge sig), når spilleren er for langt væk.

For at opnå dette skal vi finde en måde at måle afstanden fra vores slime til spilleren. Bekvemmeligheds skyld er der adfærd tilgængelig til at gøre netop det! Lad os komme i gang.

Åbn slimets adfærdredigerer og drop en Calculate Distance adfærd fra Logik sektionen. I dens adfærdsegenskaber er det første objekt allerede indstillet til vores slime. For det andet objekt, gå til fanemenuen og vælg "Player" tagget.

Photo_2019-06-26__1_48_54_PM.png

Denne adfærd, når den udføres, vil beregne afstanden i meter fra vores slime til spilleren. Ved hjælp af den information kan vi se, om spilleren er for langt væk ved at tjekke, om det overskrider en bestemt afstand.

Placer et andet Hvis adfærd fra Logik sektionen og forbind det under beregningsafstand adfærden. I Hvis adfærdsegenskaberne skal du indstille den første værdi til beregningsafstands outputværdi. Indstil betingelsen til "Er mindre end" og den anden værdi til 15.

Nu har vi en måde at kontrollere, om spilleren er for langt væk ved at se, om afstanden mellem slime og spiller er mindre end 15 (meter). Hvis den betingelse er falsk, så er spilleren for langt væk, og Hvis adfærden vil ikke udføre den næste adfærd.

IMG_0085.JPG

Nu hvor vi har vores nye betingelse klar til brug, skal vi frakoble Get Position (slime) og den gamle Hvis adfærd fra den foregående del af tutorialen og skabe lidt plads til vores nye betingelse. Du kan frakoble adfærd ved at trykke og holde forbindelserne mellem adfærd.

Med den nye afstands betingelse på plads, forbind Get Position (slime) til Calculate Distance adfærd, og forbind den nye Hvis adfærd til den gamle Hvis adfærd. Du skulle nu have noget som dette:

Photo_2019-06-26__1_50_57_PM.png

Det begynder at se ret kompliceret ud nu, men ideen er relativt simpel. Nu har vi, at før vi overhovedet tjekker, hvilken retning slimet skal hoppe, tjekker vi først for at se, om afstanden mellem slimet og spilleren er mindre end 15 (meter).

Hvis spilleren er tættere end 15 meter, vil det så fortsætte med at kontrollere, hvilken retning, vi skal hoppe i, som sædvanlig. Hvis spilleren er længere end 15 meter væk, fortsætter vi ikke, og logikken afsluttes der, indtil næste gang slimet "tænker" igen (2 sekunder senere).

Giv spillet et forsøg! Hvis du kommer for tæt på slimet, skal det begynde at hoppe mod dig, men hvis du bevæger dig for langt væk, skal det stoppe med at bevæge sig og vente, indtil du kommer tæt på det igen.

Vores slime begynder at se ret truende ud nu, men den mangler stadig en måde at skade spilleren på. I næste del af denne tutorial, vil vi give spilleren en sundhedsbjælke og implementere noget logik til at skade spilleren.

Del 5: Angreb på Spilleren

Som beskrevet i introduktionsafsnittet, vil vi implementere slimeangreb ved at få slimet til at skade spilleren, når det berører spilleren. For at komme i gang med at implementere en måde for slimet at angribe spilleren, skal vi først give spilleren noget sundhed.

I hovedredigeringsprogrammet skal du vælge Scene UI lag og oprette et nyt objekt med knappen Særlige objekter. Tryk på "Health Bar" for at oprette en sundhedsbjælke til vores spiller.

IMG_0120.JPG

Da den er placeret på Scene UI-laget, hvis vi vælger at udvide vores verden og lade skærmen følge spilleren rundt, vil den forblive det samme sted på skærmen.

Du kan placere det, hvor du ser det rette på skærmen. Jeg har placeret min i midten af skærmen nær bunden.

Photo_2019-06-26__1_39_49_PM.png

Når du er færdig med at finde et godt sted til din sundhedsbjælke, kan vi begynde at arbejde på at fjerne sundhed fra sundhedsbjælken. Gå tilbage til hovedlaget, hvor dit slime er, og åbn dens adfærdredigerer igen.

I et pænt tomt område i slimets adfærd skal du droppe en Collided adfærd fundet under Objekt sektionen. I dens egenskaber skal du indstille det andet objekt til "Player" tagget.

Photo_2019-06-26__1_38_54_PM.png

Under den tilpassede adfærd sektion, drop en Broadcast Message adfærd og forbind den under Kollideret adfærd. I Broadcast Message adfærdens egenskaber, indstil Event Key til "player hit", og indstil værdien til -10.

Husk: Event keys er store/små bogstaver følsomme! For simpelhedens skyld vil denne tutorial bruge små bogstaver til begivenhedsnøgler. Du kan vælge at bruge store bogstaver, hvis du foretrækker det, men vær sikker på at huske, hvilke bogstaver der er store bogstaver til senere.

Photo_2019-06-26__1_41_06_PM.png

Nu har vi en måde at registrere, hvornår spilleren skal tage skade. Når spilleren kolliderer med slimet, vil en meddelelse for begivenheden "player hit" blive sendt med en værdi på -10. Vi bruger -10 til at fortælle sundhedsbjælken om at "tilføje" -10 sundhed, og da værdien er negativ, vil det fjerne 10 sundhed.

Vi skal stadig tilføje den logik til sundhedsbjælken, så lad os gøre det nu. Forlad slimets adfærdredigerer og tryk på Scene UI-laget, så tryk på sundhedsbjælken. Åbn adfærdredigereren for sundhedsbjælken.

I sundhedsbjælkens adfærdredigerer, drop en Receive Message adfærd fra den tilpassede sektion. I dens egenskaber, indstil Event Key til "player hit". (Husk det er store/små bogstaver følsomt!)

Photo_2019-06-26__1_40_12_PM.png

Denne adfærd vil være vores lytter for "player hit" meddelelsen sendt, når spilleren rammer slimet. Når denne adfærd registrerer et broadcastmeddelelse for "player hit" hvor som helst i spillet, vil den udføre.

Nu skal du tilføje en Add to Health Bar adfærd under UI adfærd sektionen og forbinde den under modtage besked adfæren.

I tilføj til sundhedsbjælkeegenskaberne skal du trække outputværdien fra modtage meddelelses adfærden til "Værdi at tilføje" feltet. Den værdi vil være den -10 værdi, vi indstillede tidligere i Broadcast Message adfærden på slimet. På denne måde, hvis vi vælger at få andre fjender til at skade forskellige beløb, skal vi bare ændre værdien på broadcasten til hvad som helst andet, vi ønsker, og sundhedsbjælken vil bruge den værdi i stedet!

Sørg for at "Event On Full" er slukket, og "Event On Empty" er tændt. Dette betyder, at hvis sundhedsbjælken når nul sundhed, vil den udføre den næste adfærd.

IMG_0080.JPG

Under Scene adfærd sektionen, drop en Load Overlay adfærd og forbind den til Add to Health Bar adfærden.

I Load Overlay-indstillingerne skal du ændre den valgte overlay til "Game Over" overlay, der automatisk laves til dig, når du laver et nyt projekt.

Photo_2019-06-26__1_42_30_PM.png

Spil spillet og prøv det! Nu skal du, når du kommer i kontakt med slimet, tømme sundhedsbjælken. Når sundhedsbjælken når nul, er det game over.

Photo_2019-06-26__1_42_58_PM.png

Cool! Nu har vi en måde at skade spilleren og tabe spillet på.

Noget føles dog lidt forkert. Vi giver ikke meget feedback til spilleren, at de er blevet ramt, bortset fra at fjerne sundhed fra sundhedsbjælken.

Vi kan rette dette ved at propelere spilleren og slimet væk fra hinanden, hvilket gør det meget klart, at de har været i kontakt, og samtidig holde spilleren fra at tage skade for hurtigt ved hurtigt at kollidere med slimet.

Gå til adfærdredigereren for slimet (du skal muligvis vælge hovedlaget først) og drop en Propel Object adfærd under fysik sektionen. Forbind den under Broadcast Message adfærden fra tidligere og åbn dens egenskaber.

I egenskaberne skal du ændre det andet objekt til "Player" tagget ved at åbne Tags fanen og vælge "Player". Ændre kraftværdien til 200, objekt A multiplikatoren til 0,25, og objekt B multiplikatoren til 1.

Photo_2019-06-26__1_45_59_PM.png

Nu, når spilleren kolliderer med slimet, vil det skubbe spilleren væk fra slimet med en kraft på 200 (1 × 200 kraft) og slimet vil blive skubbet væk fra spilleren med en kraft på 50 (0,25 × 200 kraft).

Vores spil begynder at føles ret godt nu! Det eneste problem nu er, at vi har en usårbar slime, og vores spiller ikke har nogen måde at besejre den på. I den næste del, vil vi implementere en måde for vores spiller at kæmpe tilbage.

Del 6: Besejre Slimet

For at lade vores spiller angribe slimet ved at hoppe på toppen af det, skal vi ændre, hvordan vi håndterer kollidering ved at få slimet til at ignorere bunden af spilleren (spillerens fødder), når der gives skade.

Åbn adfærdredigereren for slimet og tryk på den Kollideret adfærd, vi oprettede i den foregående del af tutorialen. Deaktiver indstillingen "On Bottom", som vil ignorere kollisioner, hvis slimet kolliderer med bunden af spillerens kollisionsboks.

Photo_2019-06-26__1_54_25_PM.png

Nu vil vores slime ikke skade spilleren, hvis spilleren hopper på det. I stedet ønsker vi at udføre en anden logik, når det sker.

Med den Kolliderede hændelse valgt, dupliker den og vend alle indstillingerne i den nye Kollideret adfærd, så kun "On Bottom"-begivenheden er aktiveret.

Photo_2019-06-26__1_54_42_PM.png

Dette vil fungere som vores indgangspunkt, når spilleren hopper oven på slimet.

Næste, drop og forbind en Destroy Object adfærd fra objekt sektionen. Den bør allerede være indstillet til at ødelægge vores slime-objekt som standard.

Photo_2019-06-26__1_54_53_PM.png

Nu, når vi spiller vores spil, ødelægger hopping oven på slimet det. Men igen, som det var med at blive ramt af slimet før, føles det ikke særlig tilfredsstillende.

Ligesom vi gjorde i den foregående del af tutorialen, lad os tilføje en anden Propel Object. Duplikere den ældre Propel Object adfærd fra spillerskade logikken og forbind den under Destroy Object adfærd. Dens egenskaber kan forblive som den ældre Propel Object adfærd.

IMG_0121.JPG

Nu når vi spiller spillet, er der et dejligt tilfredsstillende hop, når man hopper på toppen af slimet.

IMG_0130.TRIM.GIF

Konklusion & Øvelser

Og det er stort set det! Vi har tjekket alle punkterne, der er angivet i introduktionsafsnittet:

  • I stedet for at gå, vil slimet hoppe til venstre eller højre for at bevæge sig. Tjek!
  • Slimet vil hoppe i retningen af spilleren. Tjek!
  • Hvis spilleren er for langt væk, vil slimet ikke bevæge sig (idle). Tjek!
  • Slimet vil tage spillerens sundhed ved kontakt. Tjek!
  • Slimet er besejret, hvis spilleren hopper oven på det. Tjek!

Hvis du er nået så langt, burde du nu have en rimelig forståelse af, hvordan du kan give dine fjender noget intelligens og få dem til at tænke og træffe beslutninger på egen hånd. Godt gået!

Alligevel er der altid flere ting, der kan gøres. Som en øvelse kan du prøve at gøre følgende på egen hånd:

  1. Spil en "hit/død" slime animation, når slimet bliver hoppet på af spilleren.
  2. Spil en "hit" spiller animation, når slimet angriber spilleren.
  3. Tilføj noget tilfældighed til, hvor langt slimet vil hoppe hver gang.

En færdiggjort projektfil til denne tutorial kan findes her: Download Tutorial Project