3D-flakser, del 1

Skrevet av: Gudbrand Tandberg og Geir Arne Hjelle

Kurs: Scratch
Tema: Blokkbasert, Spill, Animasjon
Fag: Matematikk, Naturfag, Kunst og håndverk
Klassetrinn: 5.-7. klasse, 8.-10. klasse
Til lærerveiledningLast ned PDF

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!

Illustrasjon av 3d-flakser med fungerende ringer

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.

checkSjekkliste

  • 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.

flagTest prosjektet

checkSjekkliste

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.

checkSjekkliste

  • 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))
    

flagTest 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.

checkSjekkliste

  • 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 og y når du styrer med piltastene. Vi venter litt inni hver hvis-test slik at x og y 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

Lisens: CC BY-SA 4.0

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!