3D-flakser, del 2
Skrevet av: Gudbrand Tandberg og Geir Arne Hjelle
Introduksjon
Velkommen til andre og siste del av 3D-Flakser! I denne delen skal vi få Flakse til å flakse som en fugl, og snu seg i luften når vi svinger med piltastene. Til slutt skal vi gjøre det slik at man får poeng når man flyr igjennom en ring og taper hvis man treffer en ring. Etter det er det opp til deg; lag en meny, lag flere vanskelighetsgrader eller lag noe helt annet!
Steg 1: Lag bakken og få den til følge med
Vi begynner med et enkelt steg som gjør spillet litt mer realistisk. Siden figuren flyr så kan vi forvente at hvis man ikke flakser, så treffer man før eller siden bakken. Dette gjør vi med en ny figur som vi kaller bakken
.
Sjekkliste
-
når jeg mottar [Nytt spill v] gå til x: (0) y: (-300) sett størrelse til (200) %
Nå bør bakken ligge nederst i scenen når spillet begynner. Hvis den ikke gjør det kan du endre litt på tallene.
-
gjenta for alltid sett y til ((20) - (y)) hvis <berører [Flakse v]> si [du tapte!] i (2) sekunder stopp [alle v] :: control slutt slutt
-
hvis <(y) < [150]> vis ellers skjul slutt
Steg 2: Få Flakse til å flakse
Hvis du har gjort del en av 3D-Flakser riktig så kan du nå styre flakse-figuren gjennom ringene med piltastene. Det er to ulemper med dette: det er et veldig lett spill, og det er ikke sånn fugler flyr. Vi vil at Flakse faktisk må flakse for å holde seg i luften. Derfor endrer vi litt på skriptene til flakse-figuren slik at den flakser med vingene når vi trykker mellomromtasten.
Sjekkliste
-
hvis <tast [mellomrom v] trykket?> endre [flaks v] med (1) vent (0.01) sekunder slutt
Alt som skjer nå er at
flaks
økes med én hver gang mellomrom trykkes. Vi lager et nytt skript hos Flakse som tar seg av flaksingen. -
endre [y v] med (løft) hvis <(løft) > [-5]> endre [løft v] med (-0.5) slutt
-
når jeg mottar [Nytt spill v] gjenta for alltid gjenta til <(flaks) = [0]> endre [flaks v] med (-1) hvis <(løft) < [5]> endre [løft v] med (2) slutt hvis <(løft) < [0]> sett [løft v] til [0] slutt slutt slutt
Nå kan du justere litt på tallene i skriptene over for at Flakse flyr slik DU vil!
Steg 3: Få Flakse til å snu seg i luften
For at spillet skal se best mulig ut så vil vi at flakse skal rotere i luften når vi holder piltastene inne. Litt som et fly som går inn for landing. Oppførselen vi ønsker når (for eksempel) høyre piltast trykkes er denne: når piltasten først trykkes skal figuren peke mot høyre, og der skal den holde seg så lenge piltasten holdes inne. Når piltast slippes skal figuren rotere sakte tilbake til sin vanlige posisjon.
Dette får vi til ved å endre litt på hovedskriptet til flakse.
Sjekkliste
-
hvis <(retning) < [90]> snu @turnRight (1) grader slutt hvis <(retning) > [90]> snu @turnLeft (1) grader slutt
Disse klossene sørger enkelt og greit for at figuren alltid prøver å peke mot retning 90 (som er vannrett for figuren). Når bør flyvningen til Flakse se ganske bra ut!
Steg 4: Sjekk om Flakse treffer ringene
Nå ønsker vi at Flakse skal få poeng hver gang han flyr igjennom ringene, og taper om han treffer en ring. Denne oppførselen skal vi kode i når jeg starter som klon
-skriptet til ring-figuren.
Sjekkliste
-
hvis <<berører [Flakse v]> og <(distanse) < [1.2]>> si [du tapte!] i (1) sekunder stopp [alle v] :: control slutt
Nå stopper spillet om man treffer en ring som er nærme. Hvis du vil kan du kode noe annen oppførsel når man treffer en ring (kanskje man bare mister et liv, eller det spilles en lyd?)
-
hvis < <(x) < ((ringX) + (160))> og <(x) > ((ringX) - (160))> > hvis < <(y) < ((ringY) + (160))> og <(y) > ((ringY) - (160))> > endre [poeng v] med (1) slutt slutt
Fungerer skriptet som det skal? Hva er det vi egentlig sjekker i den siste
hvis
-testen?
Nå er vi igrunn ferdig med det viktigste i spillet. Men det er fremdeles masse spennende igjen du kan prøve:
Ting å prøve
Forbedre denne siden
Funnet en feil? Kunne noe vært bedre?
Hvis ja, vennligst gi oss tilbakemelding ved å lage en sak på Github eller fiks feilen selv om du kan. Vi er takknemlige for enhver tilbakemelding!