I denne opplæringsserien vil vi vise deg hvordan du gjenskaper det klassiske Arkanoid-spillet (eller Breakout) i Unity, ved hjelp av Unitys innfødte 2D-verktøy. I hvert innlegg fokuserer vi på en bestemt del av spillet; I dette innlegget legger vi til lyder og musikk, oppretter nye nivåer, og distribuerer spillet til forskjellige enheter og plattformer.
I de tidligere opplæringsprogrammene har du satt opp prosjektet, kodet hovedobjektets oppførsel og implementert en score og livssystem. Hvis du ikke har fullført de tidligere opplæringene ennå, anbefaler vi sterkt at du gjør det før du fortsetter.
Ta en titt på denne demonstrasjonen for å se hva vi sikter mot i hele serien:
I det første innlegget i denne serien importerte du flere lyd- og musikkfiler. Det er nå på tide å bruke dem. I lyder mappe, det er tre filer:
hit.wav
: å bruke på hver ball kollisjon.lose.wav
: å bruke når spilleren mister livet.point.wav
: å bruke så scorer spilleren et poeng.Vi må endre begge Spiller og Ball skript for å spille disse effektene. La oss begynne med Ball gjenstand.
I utgangspunktet må vi legge til en lydkomponent til spillobjektene. Velg ballen og legg til en Lydkilde (Hierarki> Inspektør> Legg til komponent). Merk at du bør fjerne merket for alternativet Spill på Awake, hvis det er sjekket Ellers vil lydeffekter spilles automatisk når scenen starter.
Du har en lydkomponent; nå må du endre balluskriptet for å samhandle med komponenten selv. Opprett en ny variabel for lydfilen. Siden du vil ha tilgang til lyden i editoren, bør variabelen være offentlig
:
offentlig AudioClip hitSound;
Vi skal få ballen til å produsere en lyd hver gang den kolliderer med noe mens det er aktivt. For å gjøre dette bruker vi OnCollisionEnter2D
metode, kontroller om ballen er aktiv, og spill av klippet hvis det er tilfelle:
void OnCollisionEnter2D (Collision2D kollisjon) if (ballIsActive) audio.PlayOneShot (hitSound);
Merk at du må sjekke om ballen er aktiv før du spiller lyden ellers, vil lyden hele tiden begynne å spille når ballen er inaktiv.
Nå, flytt til redigeringsprogrammet og sjekk at du har en ny parameter, Hit lyd, i balluskriptet:
Dra hit.wav fil fra Prosjekt tab og slipp den på Hit lyd parameteren til skriptet. Du bør se noe slikt:
trykk Spille, og kontroller at du nå hører riktig lyd hver gang ballen hopper av noe.
La oss nå sette inn de to gjenværende lydene i spillet. Sett inn en annen Lydkilde, men denne gangen til spillerobjektet. Igjen, fjern merket av Spill på Awake alternativ.
Nå åpner du spillerskriptet og oppretter to tilleggsvariabler. Den første variabelen er for lyden som spilles når spilleren scorer noen poeng, og den andre er for lyden som spilles når spilleren mister livet. Begge bør deklareres som offentlige.
offentlig AudioClip punktSound; offentlig AudioClip lifeSound;
Siden du nå har objektene, la oss endre addPoints
Metode for å spille av lyden hver gang den heter. Som før må du ringe PlayOneShot
metode fra lyd
gjenstand:
void addPoints (int poeng) playerPoints + = points; audio.PlayOneShot (pointSound);
Gjør det samme i TakeLife
metode:
void TakeLife () playerLives--; audio.PlayOneShot (lifeSound);
Lagre skriptet og flytt til redaktøren en gang til. Dra de to gjenværende lydfilene til hver ny spillers lyd (punkt og liv). Du bør ha noe som følgende bilde:
Nå, Spille Spillet og bekreft at de tre lydene spiller når forventet.
Til tross for lydeffekter, er den generelle følelsen mens du spiller spillet ganske tom. La oss endre det ved å legge til bakgrunnsmusikk som er forskjellig for hvert nivå.
I hierarki fanen, velg Bakgrunn objekt og legg til en lydkilde-komponent:
Dra nå Jaunty Gumption.mp3 fra Prosjekt tab og slipp den på Lydklipp parameteren til Lydkilde komponent. Denne gangen bør du forlate Spill på Awake parameter kontrollert, siden vi vil at musikken skal begynne å spille i begynnelsen av vårt nivå. Skru på Loop alternativet også; Dette vil få musikken til å spille på en uendelig sløyfe så lenge nivået blir spilt.
Gå videre og trykk Spille! Ditt spill inneholder nå lyd og musikk.
For å fullføre spillet, er det to ting vi skal adressere:
La oss starte med å skape et andre nivå for spillet. I stedet for å skape et nivå fra grunnen av, kan vi bare duplisere første nivå og endre objektene til dette nye nivået.
For å gjøre det trenger du bare å lagre scenen din som en ny. Klikk Fil> Lagre scene som ... , navngi det Nivå 2
, og plasser den i nivåer mappe.
For å få dette nivået til å se annerledes ut enn det første, ville vi helst endre posisjonene til alle blokkene. Ta gjerne det selv, men i form av denne opplæringen vil vi bare endre bakgrunnsbilde og nivåmusikken.
Velg Bakgrunn fra hierarki og flytte til Inspektør. Dra Background2 fil fra Sprites \ bakgrunner mappe til Sprite komponent av Bakgrunn spillobjekt:
For å endre bakgrunnsmusikken trenger du bare å dra den ønskede musikkfilen inn i Lydklipp parameter. For nivå 2, bruk Monkeys Spinning Monkeys.mp3 fil.
Hvis du trykker på Spille knappen kan du teste dette nye nivået. Som du kan se, oppfører den seg på samme måte som den første, men med en annen bakgrunn og annen musikk. Siden andre nivå er klart, er det nå på tide å håndtere de to tidligere identifiserte situasjonene.
I spillerens paddle script, opprett en ny metode kalt Vinne tape
. Her vil vi sjekke for når spilleren mister alle sine liv, og reagerer tilsvarende: hvis playerLives
når 0
, vi kaller bare Application.LoadLevel
metode og gjenopplate første nivå.
void WinLose () // start spillet om (playerLives == 0) Application.LoadLevel ("Level1");
Deretter håndterer vi saken der alle blokkene er ødelagt, så vi vil flytte til neste nivå. For å bestemme antall gjenværende blokker kan vi bruke FindGameObjectsWithTag
Metode igjen, denne gangen søker etter objekter i det nåværende nivået merket Blokkere. Hvis den resulterende matrisen har en lengde på 0
, så vet vi at det er på tide å laste neste nivå.
Siden denne opplæringen bare har to nivåer, så hvis spilleren vinner på andre nivå, vil vi bare lukke spillet (ved å ringe Application.Quit
).
Komplett utdrag for Vinne tape
metoden er:
void WinLose () // start spillet om (playerLives == 0) Application.LoadLevel ("Level1"); // blokker ødelagt hvis ((GameObject.FindGameObjectsWithTag ("Block")) Lengde == 0) // Kontroller nåværende nivå hvis (Application.loadedLevelName == "Level1") Application.LoadLevel ("Level2") ; ellers Application.Quit ();
Vi ringer til Vinne tape
metode i Oppdater
Metoden til spiller-skriptet - legg det bare til slutten av metoden. For enkelhet, den komplette Oppdater
metoden er:
ugyldig oppdatering () // horisontal bevegelse playerPosition.x + = Input.GetAxis ("Horizontal") * playerVelocity; // la spillet hvis (Input.GetKeyDown (KeyCode.Escape)) Application.Quit (); // oppdater spillobjektet transform transform.position = playerPosition; // grenser hvis (playerPosition.x < -boundary) transform.position = new Vector3 (-boundary, playerPosition.y, playerPosition.z); if (playerPosition.x > grense) transform.position = ny Vector3 (grense, playerPosition.y, playerPosition.z); // Kontroller spilltilstand WinLose ();
Flytt tilbake til redaktøren. For å gjøre Vinne tape
Metoden fungerer riktig, du må merke blokkene i spillet. I Prosjekt kategorien, gå til prefabs mappe og velg en blokk. Alle blokkene er for øyeblikket untagged, og det er nei Blokkere tag, så vi må lage den. Klikk på stikkord knappen og velg Legg til tag alternativ. Legg til en ny tag kalt Blokkere:
Spillet er nå klart for testing. Klikk Spille og prøv det ut!
Å bygge og distribuere prosjektet er vanligvis de siste trinnene i et prosjekts utvikling. I denne delen lærer du hvordan du lager en endelig bygg og de nødvendige konfigurasjonene for at den skal kunne kjøre i et multi-platformsmiljø.
Først må du legge til alle scenene til en unik bygning. Klikk Fil> Bygg innstillinger. Et nytt vindu vil dukke opp; de Scener i bygg området vil trolig være tomt, slik som det:
Hvis det er tilfelle, må du legge til scenene vi opprettet før. Klikk Legg til nåværende og en scene vil bli lagt til Scener i bygg område:
I vårt eksempel har vi lagt til første nivå. Lukk dette vinduet og velg det andre nivået i redigeringsprogrammet. Klikk Fil> Bygg innstillinger igjen, og klikk Legg til nåværende en gang til:
Hvis du har lagt til det andre nivået før det første, ikke bekymre deg: bruk bare musen til å bytte posisjoner i grensesnittet (siden den første scenen i listen er den som skal lastes når spillet blir lansert).
Når begge nivåene er lagt til i riktig rekkefølge, klikker du Bygg og kjøre og du bør se en korrekt bygging av ditt siste spill.
Som du kan se, er det flere plattformer du kan velge å distribuere spillet ditt for, nemlig:
Den store fordelen ved å bruke Unity er at du bare trenger å programmere spillet en gang da, da du bruker motoren, kan du raskt og enkelt distribuere det til noen av de nevnte plattformene.
Du bør imidlertid være oppmerksom på at enkelte plattformer og operativsystemer har visse begrensninger når det gjelder distribusjonsregler. For eksempel å distribuere til iOS-enheter må du ha et Mac-system og et riktig utviklingslisens. Du trenger også lisenser for å distribuere til PS3 og Xbox.
Nå som du har fullført denne opplæringen, tror vi at du er forberedt på å utføre noen utfordringer. Du kan se disse utfordringene som en mastering kunnskapssøk.
Dette avsluttes denne opplæringsserien om å bygge Arkanoid ved hjelp av Unitys 2D-verktøysett. Vi har dekket mye bakken i denne korte serien, og du burde nå vite nok til å komme i gang med dine egne 2D-spill. Hvis du har noen spørsmål eller kommentarer, kan du som alltid gjerne sende oss en linje i kommentarene.