Gjør skrapeloddene mer reaktive med hendelser

Hva du skal skape

I den forrige opplæringen fortsatte du med å jobbe med et prosjekt for å få en krabbe jage en katt rundt skjermen, legge til en tidsbegrensning og holde score.

I denne delen fortsetter vi å jobbe med dette prosjektet. Vi legger til en kringkastingshendelse og bruker den til å utløse skript for andre sprites. Da vil vi gjemme de fleste sprites når spillet er over og vise sluttresultatet.

Hva du trenger

For å fullføre denne opplæringen må du:

  • en gratis konto med Scratch
  • en nettleser med tilgang til Scratch (jeg anbefaler å bruke en moderne nettleser som Chrome, Firefox, Safari eller Opera for den beste opplevelsen)

Starter

Vi skal jobbe med prosjektet som ble opprettet i den forrige delen av denne serien. Vi bruker eiendommene og skriptene vi har laget så langt, og legger til flere.

Avhengig av om du jobbet sammen med den opplæringen, er det to måter å komme i gang for denne opplæringen:

  • Åpne prosjektet du opprettet for den siste opplæringen, og lag et duplikat av det.
  • Remix prosjektet jeg opprettet for å støtte den siste opplæringen.

Alternativt kan du bare fortsette å jobbe i det samme prosjektet du allerede har opprettet. Slik gjør du hver av disse (du trenger bare å gjøre en).

Dupliserer ditt eget prosjekt

Åpne Skrap og gå til prosjektet du vil duplisere. Pass på at du har klikket på Se innsiden knappen slik at du kan se prosjektets arbeid.

Klikk på i verktøylinjen Fil> Lagre som en kopi:

Skrap vil åpne din nye kopi. Gi nytt navn til det og begynn å jobbe med det.

Remixing av prosjektet mitt

Logg inn på Skrap og gå til siden for prosjektet mitt på data og variabler.

Klikk på Se innsiden knappen for å se prosjektet:

Klikk nå på Remix knapp. Skrap vil lagre en duplikat av prosjektet mitt som et nytt prosjekt i kontoen din. Gi nytt navn til det, og du er god til å gå!

Opprette en kringkastingshendelse for å sende meldinger

I denne delen av serien legger du til en kringkaste melding til prosjektet ditt for å kommunisere internt i prosjektet ditt. Du kan opprette en kringkasting i ett skript når dette skriptet når et bestemt punkt, eller en tilstand som gjelder et sprite er oppfylt, og deretter har noen av de andre sprites (eller scenen) reagert på kringkasting av meldingen. Dette knytter sprites sammen, og gir deg mer omfang når det gjelder å legge til brukerinteraksjoner.

Du vil huske det tidligere da vi la til en sprite med litt tekst i den (sa "Ouch !!") som vi tegnet som en drakt for den sprite. For øyeblikket er sprite sitter ubevisst på scenen og ikke gjør noe. Nå bruker vi en kringkasting for å få det til å gjøre noe.

Men først la oss lage kringkasting.

Klikk på cat sprite og rediger skriptet du allerede har opprettet for det.

Åpne arrangementer blokkerer og drar kringkastingsmelding1 blokkere inn i skriptet, like under endre poengsum med 1 blokkere. Klikk på rullegardinlisten for message1 og klikk på ny melding… . Skriv inn litt tekst som du kan bruke til å definere sendingen din. Denne teksten vil ikke bli sett av brukeren, men du vil bruke den andre steder i prosjektet ditt, så det er fornuftig å kalle det noe meningsfylt. Jeg ringer til min fanget.

Her ser kattens skript ut akkurat nå:

Nå kan vi bruke denne kringkasting til å utløse skript for andre sprites.

Bruke en kringkastingshendelse for å starte et script

Så langt har vi startet alle våre skript med når det grønne flagget klikket blokkere, noe som betyr at skriptet kjøres automatisk når prosjektet starter. Noen ganger vil du ikke at det skal skje: du vil at et skript skal utløses etter at prosjektet har startet. Det er noen måter å gjøre dette på: Du kan utløse et skript når et sprite eller en tast er trykket, eller når en variabel som høyhet endres. Metoden vi bruker her, starter et skript når sprite mottar en kringkastingsmelding.

Klikk på tekstmeldingen du opprettet tidligere (Sprite2). Begynn med å gi det et bedre navn (ved å klikke på Jeg ikon øverst til venstre og redigering av navnet) -Jeg ringer min au.

Vi vil at denne sprite skal være usynlig for det meste, og vises bare når krabben fanger katten. Så vi lager to skript: den første til å skjule sprite og den andre for å få den til å vises.

Opprette et skript for å gjøre sprite forsvinne

Lag dette skriptet for sprite:

  • når det grønne flagget klikket
  • gjemme seg

Du finner gjemme seg blokkere i Utseende blokker. Dette skjuler sprite: nå når du starter prosjektet, vil den forsvinne.

Opprette et skript for å få sprite til å vises igjen

Opprett nå et nytt skript for Ouch sprite:

  • når jeg blir fanget
  • gå til katt
  • vise fram
  • vent 0,5 sekunder
  • gjemme seg

Du finner den første sprite i arrangementer blokker, den gå til blokkere i Bevegelse blokker, den vente blokkere i Styre delen og vise fram og gjemme seg blokkerer inn Utseende.

Bruke hendelser med bakgrunner

Da prosjektene dine blir lengre og mer komplekse, kan du oppdage at du vil gi brukeren en følelse av å utvikle seg gjennom et spill eller en animasjon ved å endre bakgrunnen. Her vil vi gjøre det når timeren løper ut og kampen avsluttes.

For å gjøre det må vi:

  • Legg til en kringkasting når timeren løper ut
  • lag et nytt bakteppe for å vise på slutten av spillet
  • endre bakteppe når timeren løper ut
  • gjem de eksisterende sprites når kampen slutter
  • Fortell brukeren sin poengsum når kampen slutter

Vi bruker kringkaste Begivenhet blokker og også når bakteppe bytter til hendelsesblokk. La oss begynne med å lage den kringkasting.

Opprette en kringkasting

Velg Scene og legg til en kringkaste blokkere til slutten av skriptet, erstatte stopp alt blokkere. Jeg ringer denne kringkasting spillet er slutt.

Opprette et nytt bakteppe

Lag nå et ekstra bakteppe for scenen på samme måte som du opprettet bakgrunner tidligere i denne serien. Velg Scene, Klikk på bakgrunner kategorien, og importer, tegne eller velg et bakgrunn fra biblioteket. Jeg velger Circles bakteppe fra biblioteket.

Den nye bakgrunnen vil nå vises, og den opprinnelige vil forsvinne - ikke panikk! Vi gjør at den opprinnelige vises når prosjektet lanseres og den nye vises når spillet er ferdig.

Endre bakgrunnen på riktig tidspunkt

Nå kan du sannsynligvis finne ut hvordan du får den første bakgrunnen når prosjektet lanseres. Bare dra bytt bakteppe til blokkere fra Utseende blokkerer til scriptet for scenen, rett under når det grønne flagget klikket blokkere og over sett score til 0 blokkere. I rullegardinmenyen i den aktuelle blokken velger du strand malibu.

Nå når du kjører prosjektet, vil bakgrunnen skifte tilbake til den du er kjent med:

For å endre bakteppe når spillet avsluttes, opprett et nytt skript for scenen:

  • når jeg blir fanget
  • bytt bakteppe til sirkler

Ditt scenen vil nå ha to skript:

Nå når du kjører prosjektet, vil bakgrunnen endres når spillet avsluttes, men spillet vil ikke ende opp. La oss fikse det.

Gjemmer seg når spillet slutter (og viser dem når det begynner)

Når kampen slutter, vil vi at krabbe, sjøstjerne og ouch sprites forsvinner. Vi må derfor opprette et identisk skript for hver av disse spidene, som vil bli utløst av sendingen. Den gode nyheten er at du kan lage skriptet en gang, og deretter kopiere det til hver av sprites.

Start med krabbe sprite. Lag dette skriptet for det:

  • når jeg mottar spill over
  • gjemme seg

Kopiér nå det skriptet til hver av de ouch og sjøstjerner sprites ved å dra skriptet fra scripts rutenett for krabbe sprite på hver av sprites under hovedstadiet.

Nå når du spiller spillet, vil dine sprites forsvinne når kampen slutter, men de kommer ikke opp igjen når du spiller spillet igjen. Så du må få dem til å vises når prosjektet starter.

For hver av krabbe og sjøstjerner sprites, legg til en vise fram blokkere til skriptet som begynner med når det grønne flagget klikket, rett i begynnelsen. Ikke gjør dette for å få det som det bare vises når krabben og katten rører. Krabbe sprite for eksempel vil nå se slik ut:

Nå når du spiller spillet, vil sprites vises i begynnelsen og forsvinne på slutten. Det eneste som ikke fungerer nå, er katten sprite, som fortsatt beveger seg rundt. Vi vil ikke at den skal gjøre det, så vi vil redigere eksisterende skript for katten.

Katten har for tiden en for alltid blokk som styrer bevegelsen og poengsummen. Erstatt det for alltid blokkere med a gjenta til blokkere, sørg for at alle de samme blokkene fortsatt er inne i gjenta til blokkere som var inne i for alltid blokkere. Du kan finne det lettere å dra for alltid blokkere unna skriptet på scripts ruten, dra den gjenta til blokkere i posisjon, og dra deretter blokkene fra innsiden av for alltid blokkere inne i gjenta til blokkere. Slett deretter for alltid blokkere.

I rommet i gjenta til blokkere, vi kan ikke bruke a når jeg mottar blokkere, da de er laget for å starte skriptene. I stedet bruker vi en operatør. Dra = blokkere inn i det rommet, dra Timer variabel til det første rommet, og skriv inn 0 i den andre plassen slik at blokken leser Gjenta til Timer = 0.

Kjør nå spillet, og når tiden stopper, vil katten fortsatt være synlig, men vil være stille.

Forteller brukeren deres poengsum når spillet slutter

La oss få katten fortelle brukeren deres poengsum. Opprett et nytt skript for katten sprite som følger:

  • når bakteppe bytter til sirkler
  • si bli med deg scoret score

Å lage den andre blokken er litt komplisert. Du må dra den si hei! blokkere til skriptet, og dra deretter bli med blokkere fra operatører til rommet der det står Hallo! Skriv deretter 'Du scoret' i det første rommet i delingsblokken, og dra Score variabel til andre plass. Pass på at du legger til et mellomrom på slutten av teksten. Skriptet ser slik ut:

Nå når du kjører spillet, vil katten dukke opp på egen hånd på slutten og fortelle deg poengsummen din.

Sammendrag

Ved å legge til hendelser i prosjektene dine, kan du få ting til å skje når prosjektet utvikler seg som svar på brukerinnganger, skript som når et bestemt punkt, eller verdien av en variabel endrer seg. I denne opplæringen har du lært hvordan du bruker hendelser for å endre bakgrunnen når timeren teller ned til null, og viser brukerens poengsum.

Hvis du har lyst på en utfordring, hvorfor ikke legge til noen operatører i sprite du opprettet som forteller brukeren deres poengsum. Kanskje du kan bruke en hvis blokkere for å oppdage verdien av Score verdifulle og få katten si "godt gjort!" hvis brukeren scorer mer enn en viss mengde, eller "bedre hell neste gang!" hvis de har lav score.

I neste del av denne serien fortsetter vi å lage animerte effekter ved hjelp av bakgrunner. Vi vil gjøre bruk av de dupliserte bakgrunnene vi opprettet rett i begynnelsen av serien for å lage en zooming i kraft.