Bygg Arkanoid med enhet lyd, nye nivåer og distribusjon

Hva du skal skape

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.

Hvor vi forlot

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.

Endelig forhåndsvisning

Ta en titt på denne demonstrasjonen for å se hva vi sikter mot i hele serien:

Lyder og musikk

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.

Bakgrunnsmusikk

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.

nivåer

For å fullføre spillet, er det to ting vi skal adressere:

  • Når spilleren ødelegger alle blokkene, bør de gå videre til neste nivå.
  • Når spilleren går tom for liv, bør spillet starte på nytt.

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!

Bygg og distribuere prosjektet

Å 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:

  • Nettlesere
  • PC, Mac og Linux
  • Mobiloperativsystemer: iOS, Android, Blackberry og Windows Phone 8
  • Google Native Client
  • Konsoller: Xbox 360, PS3 og Wii
  • Windows Store

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.

utfordringer

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.

  1. Legg til forskjellige blokkstiler og konfigurasjoner: Målet er å definere flere blokker med forskjellige egenskaper, for eksempel forskjellige scoreverdier og forskjellige antall treff for å drepe.
  2. Opprett et originalnivå: et tredje nivå som er helt forskjellig fra to av opplæringen. Du kan bruke en annen bakgrunn, annen musikk og en annen blokkoppsett. Vi vil gjerne se skjermbilder i kommentarseksjonen!
  3. Implementere en flerspillermodus ved hjelp av det samme tastaturet: Legg til den nødvendige logikken for å håndtere innspill fra andre tastaturtaster, og vis poengsummen og lever for den andre spilleren i grensesnittet.

Konklusjon

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.