3D-flakser, del 1
Skrevet av: Gudbrand Tandberg og Geir Arne Hjelle
Introduksjon
I dette prosjektet skal vi lage en versjon av Flaksefugl (som er en kopi av Flappy Bird) i tre dimensjoner! Spillet går ut på at du styrer en flyvende figur gjennom ringer som kommer mot deg. Du må styre figuren opp og ned og side til side. Hovedutfordringen i dette spillet er å få det til å virke som om ringene faktisk kommer mot flakseren, og så forsvinner forbi. Prosjektet er delt inn i to deler siden det er ganske mye vi skal igjennom. I denne første delen skal vi få ringene til å fungere som de skal. La oss sette i gang!
Steg 1: Lag ringer, og få dem til å komme mot deg
Spillet skal bestå av tre figurer: Ring, Flakser og Bakken.
Vi begynner med å lage ringfiguren. Du kan enkelt tegne den selv som to sirkler inni hverandre, fylt med en farge imellom.
Sjekkliste
-
når jeg mottar [Nytt spill v] skjul gjenta for alltid lag klon av [meg v] vent (1) sekunder slutt når jeg starter som klon gå til x: (0) y: (0) vis gjenta (10) ganger endre størrelse med (5) vent (0.1) sekunder slutt slett denne klonen
Du må også lage et skript som sørger for at meldingen Nytt spill
sendes når det grønne flagget klikkes.
Test prosjektet
Sjekkliste
De to skriptene vi har foreløpig er en OK start, men de er ikke gode nok til å virkelig kalles 3D! Tenk litt på hvordan det virker som om noe vokser i størrelse når det kommer mot deg. Når det er langt unna så vokser det ganske sakte, mens når det er nærme så vokser det mye fortere. Dette skal vi få til ved hjelp av en variabel som vi kaller distanse
. Når distanse
er stor, så er ringen langt borte, og skal vokse sakte. Når distanse
er liten så betyr det at ringen er nærme, og den skal vokse fort.
-
når jeg starter som klon gå til x: (0) y: (0) vis sett [distanse v] til [10] gjenta til <(distanse) < [1]> sett størrelse til ((150) / (distanse)) % endre [distanse v] med (-0.5) vent (0.1) sekunder slutt slett denne klonen
Utfordring: Gjennomsiktig effekt
Dette er ikke viktig for å kunne fortsette med spillet, men prøv hvis du vil. For at det skal se enda mer ut som at ringene først er langt borte og så nærme, så kan du bruke klossen
sett [gjennomsiktig v] effekt til ((100)-((150)/(distanse))
for å gjøre ringene mer gjennomsiktig når de er langt borte. Hvilke tall må du putte i denne klossen for at det skal se bra ut?
Steg 2: Få ringene til å dukke opp tilfeldige steder
For at spillet skal bli mest mulig utfordrende så burde ringene dukke opp på forskjellige steder hver gang.
Å først få dem til å dukke opp på forskjellige steder er ikke så vanskelig, men å få dem til å vokse på riktig måte er litt vrient.
Sjekkliste
-
gå til x: (tilfeldig tall fra (-100) til (100)) y: (tilfeldig tall fra (-100) til (100))
Det ser ganske bra ut, men ikke helt riktig, eller hva? Det er fordi midtpunktet til ringen er på samme sted hele tiden mens ringen er på vei mot deg. For at det skal se ut som at den suser forbi deg så må du hele tiden flytte på ringen mens den er på vei mot deg. For å få det til å fungere må ringklonen huske hvor den dukket opp til å begynne med.
-
sett [ringX v] til (tilfeldig tall fra (-100) til (100) sett [ringY v] til (tilfeldig tall fra (-100) til (100) gå til x: (ringX) y: (ringY)
Forhåpentligvis har ikke oppførselen til ringene endret seg ennå. For å få midtpunktet til ringene til å flytte på seg mens ringene kommer mot deg kan du putte følgende blokk et sted inni løkken hvor ringen vokser:
gå til x: ((ringX) / (distanse)) y: ((ringY) / (distanse))
Test prosjektet
Trykk på det grønne flagget. Nå burde det se ut som om ringene virkelig kommer mot deg! Nå kan du ta et pust i bakken og se over det du har skrevet så langt.
Steg 3: Styr en flaksefigur med piltastene
I neste del av dette kurset skal vi få en figur til å fly gjennom ringene. I dette steget skal vi lage den figuren, men ikke kode all flyveoppførselen dens.
Sjekkliste
-
når jeg mottar [Nytt spill v] sett [x v] til [0] sett [y v] til [0] gjenta for alltid hvis <tast [pil høyre v] trykket> endre [x v] med (10) vent (0.05) sekunder slutt hvis <tast [pil venstre v] trykket> endre [x v] med (-10) vent (0.05) sekunder slutt hvis <tast [pil opp v] trykket> endre [y v] med (10) vent (0.05) sekunder slutt hvis <tast [pil ned v] trykket> endre [y v] med (-10) vent (0.05) sekunder slutt slutt
Nå endres
x
ogy
når du styrer med piltastene. Vi venter litt inni hverhvis
-test slik atx
ogy
ikke plutselig vokser over alle grenser. Test gjerne hva som skjer dersom vi ikke venter. -
gå til x: ((ringX) / (distanse)) y: ((ringY) / (distanse))
til dette:
gå til x: (((ringX)-(x)) / (distanse)) y: (((ringY) - (y)) / (distanse))
Ser det riktig ut nå? Nå er vi igrunn ferdig med det som trengs for å gå videre til del 2. I del 2 skal vi få det til å virke som om Flakse flakser når vi trykker på mellomromstasten, akkurat som i Flappy Bird og Flaksefugl. Prøv deg på disse utfordringene hvis du har mer tid igjen.
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!