Construiți Arkanoid cu unitate Audio, niveluri noi și implementare

Ce veți crea

În această serie de tutorial, vă vom arăta cum să recreați jocul clasic Arkanoid (sau Breakout) în Unity, utilizând uneltele 2D native ale Unity. În fiecare post, ne vom concentra pe o anumită parte a jocului; în acest post, vom adăuga sunete și muzică, vom crea noi nivele și vom implementa jocul pe diferite dispozitive și platforme.

Unde am plecat

În tutorialele anterioare ați configurat proiectul, ați codificat comportamentele obiectelor principale și ați implementat un sistem de scoruri și vieți. Dacă nu ați terminat încă tutorialele anterioare, vă recomandăm să faceți acest lucru înainte de a continua.

Vizualizare finală

Aruncați o privire la acest demo pentru a vedea ce vrem să urmărim în întreaga serie:

Sunete și muzică

În primul post din această serie, ați importat mai multe fișiere de sunet și muzică. Acum este timpul să le folosim. În Sunete folder, există trei fișiere:

  • hit.wav: să folosească la fiecare coliziune minge.
  • lose.wav: să folosească atunci când jucătorul își pierde viața.
  • point.wav: pentru a utiliza atunci jucătorul înscrie un punct.

Trebuie să modificăm ambele Jucător și Minge scripturi pentru a juca aceste efecte. Să începem cu Minge obiect. 

Inițial, trebuie să adăugăm un componente audio la obiectele de joc. Selectați mingea și adăugați un Sursă audio (Ierarhia> Inspector> Adăugați componenta). Rețineți că trebuie să debifați opțiunea Joacă pe Trezeste, dacă este verificată; în caz contrar, efectele sonore se vor reda automat atunci când scena se va lansa.

Aveți o componentă audio; acum trebuie să modificați scriptul de minge pentru a interacționa cu componenta în sine. Creați o nouă variabilă pentru fișierul de sunet. Deoarece doriți să accesați sunetul în editor, variabila ar trebui să fie public:

public AudioClip hitSound;

Vom face mingea să producă un sunet de fiecare dată când se ciocnește cu ceva activ. Pentru a face acest lucru, folosim OnCollisionEnter2D , verificați dacă mingea este activă și jucați clipul dacă este cazul:

void OnCollisionEnter2D (coliziune Collision2D) if (ballIsActive) audio.PlayOneShot (hitSound); 

Rețineți că trebuie să verificați dacă mingea este activă înainte de a reda sunetul - în caz contrar, sunetul va începe în mod constant când mingea este inactivă.

Acum, treceți la editor și verificați dacă aveți un nou parametru, Hit Sound, în scenariul mingii:

Trageți hit.wav fișier de la Proiect și dați - o pe Hit Sound parametrul scriptului. Ar trebui să vedeți ceva de genul:

presa Joaca, și verificați că acum auziți sunetul corect de fiecare dată când mingea răsare ceva.

Acum, să inserăm cele două sunete rămase în joc. Introdu un altul Sursă audio, dar de data aceasta obiectului jucătorului. Din nou, debifați Joacă pe Trezeste opțiune.

Acum, deschideți scriptul player și creați două variabile suplimentare. Prima variabilă este pentru sunetul jucat atunci când jucătorul înregistrează unele puncte, iar cel de-al doilea este pentru sunetul jucat când jucătorul își pierde viața. Ambele trebuie declarate ca fiind publice.

public AudioClip pointSound; public AudioClip lifeSound;

Din moment ce aveți acum obiectele, să modificăm addPoints metoda de a reda sunetul de fiecare dată când este apelat. Ca și înainte, trebuie să sunați la PlayOneShot metoda de la audio obiect:

void addPoints (puncte int) playerPoints + = puncte; audio.PlayOneShot (punctSound); 

Acum faceți același lucru în TakeLife metodă:

void TakeLife () playerLives--; audio.PlayOneShot (lifeSound); 

Salvați scriptul și mutați-l din nou la editor. Glisați cele două fișiere audio rămase la fiecare sunet nou al playerului (punct și viaţă). Ar trebui să aveți ceva asemănător cu următoarea imagine:

Acum, Joaca jocul și verificați dacă cele trei sunete se joacă când se așteaptă.

Muzica de fundal

În ciuda efectelor sonore, senzația generală în timp ce se joacă jocul este destul de goală. Să modificăm acest lucru adăugând muzică de fundal diferită pentru fiecare nivel.

În Ierarhie , selectați fundal obiect și adăugați o componentă audio sursă:

Acum, dragă Jaunty Gumption.mp3 de la Proiect și dați - o pe Clip audio parametru al Sursă audio componentă. De data aceasta, ar trebui să plecați Joacă pe Trezeste parametrul verificat, deoarece dorim ca muzica să înceapă să se joace la începutul nivelului nostru. Porniți Buclă și opțiunea; aceasta va face muzica să se joace pe o buclă infinită atâta timp cât nivelul se joacă.

Du-te și apăsați Joaca! Jocul dvs. include acum sunet și muzică.

niveluri

Pentru a termina jocul, există două lucruri pe care le vom aborda:

  • Când jucătorul distruge toate blocurile, trebuie să treacă la nivelul următor.
  • Când jucătorul nu mai are viață, jocul ar trebui să fie repornit.

Să începem prin crearea unui al doilea nivel pentru joc. În loc să creăm un nivel de la zero, putem duplica primul nivel și putem modifica obiectele acestui nou nivel.

Pentru a face acest lucru, trebuie doar să vă salvați scena ca una nouă. Clic Fișier> Salvați scenă ca ... , numeste Nivelul 2, și plasați-o în niveluri pliant. 

Pentru ca acest nivel să pară diferit de cel din primul, în mod ideal am schimba pozițiile tuturor blocurilor. Simțiți-vă liber să faceți asta, dar, în scopul acestui tutorial, vom schimba doar imaginea de fundal și muzica de nivel.

Selectează fundal de la Ierarhie și treceți la Inspector. Trageți Background2 fișier de la Sprites \ Fundaluri dosar la spiriduș componenta a fundal obiect de joc:

Pentru a schimba muzica de fundal, trebuie doar să trageți fișierul muzical dorit în Clip audio parametru. Pentru nivelul 2, utilizați Monkeys Spinning Monkeys.mp3 fişier.

Dacă apăsați butonul Joaca butonul puteți testa acest nou nivel. După cum puteți vedea, se comportă în același mod ca și primul, dar cu un background diferit și muzică diferită. Deoarece cel de-al doilea nivel este gata, acum este momentul să se rezolve cele două situații identificate anterior.

În scriptul cu palete al jucătorului, creați o nouă metodă numită WinLose. Aici, vom verifica când jucătorul își pierde toată viața și reacționează în consecință: dacă playerLives ajunge 0, pur și simplu sunăm Application.LoadLevel și reîncărcați primul nivel.

void WinLose () // reporni jocul dacă (playerLives == 0) Application.LoadLevel ("Level1"); 

Apoi, vom rezolva cazul în care toate blocurile sunt distruse, deci vrem să trecem la nivelul următor. Pentru a determina numărul de blocuri rămase, putem folosi FindGameObjectsWithTag metoda din nou, de data aceasta căutând obiecte în nivelul curent marcat bloc. Dacă matricea rezultată are o lungime de 0, atunci știm că este timpul să încărcăm nivelul următor.

Deoarece acest tutorial are doar două niveluri, atunci dacă jucătorul câștigă al doilea nivel, vom închide pur și simplu jocul (sunând la Application.Quit).

Fragmentul complet pentru WinLose metoda este: 

void WinLose () // reporni jocul dacă (playerLives == 0) Application.LoadLevel ("Level1");  / / Blocheaza distrus daca ((GameObject.FindGameObjectsWithTag ("Block")) Lungime == 0) // verifica nivelul curent daca (Application.loadedLevelName == "Level1") Application.LoadLevel ;  altceva Application.Quit (); 

O să sunăm WinLose metodă în Actualizați metoda scriptului de jucător - adăugați-o doar la sfârșitul metodei. Pentru simplitate, completă Actualizați metoda este:

void Update () // mișcare orizontală playerPosition.x + = Input.GetAxis ("Orizontal") * playerVelocity; // părăsiți jocul dacă (Input.GetKeyDown (KeyCode.Escape)) Application.Quit ();  // actualizarea obiectului de joc transform transformation.position = playerPosition; // limitele dacă (playerPosition.x < -boundary)  transform.position = new Vector3 (-boundary, playerPosition.y, playerPosition.z);  if (playerPosition.x > limită) transform.position = Vector3 nou (graniță, playerPosition.y, playerPosition.z);  // Verificați starea jocului WinLose (); 

Mergeți înapoi la editor. Pentru a face WinLose metoda funcționează corect, trebuie să etichetați blocurile din joc. În Proiect filă, mergeți la prefabricate și selectați un bloc. Toate blocurile sunt în prezent neclasificate și nu există bloc tag, așa că trebuie să-l creăm. Apasă pe Etichetă și selectați Adaugă etichetă opțiune. Adăugați o nouă etichetă numită bloc:

Jocul este acum pregătit pentru testare. Clic Joaca și încercați-l!

Construirea și implementarea proiectului

Construirea și implementarea proiectului sunt, de obicei, etapele finale ale dezvoltării unui proiect. În această secțiune, veți învăța cum să creați o construcție finală și configurațiile necesare pentru ca aceasta să ruleze într-un mediu multi-platformă.

În primul rând, trebuie să adăugați toate scenele la o construcție unică. Clic Fișier> Setări pentru configurare. Va apărea o nouă fereastră; Scene în construcție zona va fi probabil necomplet, așa cum este cazul:

În acest caz, trebuie să adăugați scenele create anterior. Clic Adaugă curent și o scenă va fi adăugată la Scene în construcție zonă:

În exemplul nostru, am adăugat primul nivel. Acum, închideți această fereastră și selectați al doilea nivel din editor. Clic Fișier> Setări pentru configurare din nou, și faceți clic pe Adaugă curent inca o data:

Dacă ați adăugat al doilea nivel înainte de primul, nu vă faceți griji: folosiți mouse-ul pentru a schimba pozițiile în cadrul interfeței (deoarece prima scenă din listă este cea care va fi încărcată la lansarea jocului).

După ce ambele niveluri sunt adăugate în ordinea corectă, faceți clic pe Construiți și executați și ar trebui să vedeți o construcție corectă a jocului dvs. final.

După cum puteți vedea, există mai multe platforme pe care puteți alege să le implementați, și anume:

  • Browsere web
  • PC, Mac și Linux
  • Sisteme de operare mobile: iOS, Android, Blackberry și Windows Phone 8
  • Google Native Client
  • Console: Xbox 360, PS3 și Wii
  • Magazinul Windows

Marele avantaj al utilizării Unity este că trebuie doar să vă programați jocul o dată - apoi, folosind motorul, îl puteți deplasa rapid și ușor pe oricare dintre platformele menționate mai sus.

Cu toate acestea, trebuie să rețineți că unele platforme și sisteme de operare au anumite limitări în ceea ce privește regulile de implementare. De exemplu, pentru a implementa dispozitive iOS trebuie să aveți un sistem Mac și o licență de dezvoltare adecvată. De asemenea, aveți nevoie de licențe pentru implementarea în PS3 și Xbox.

Provocări

Acum că ați terminat acest tutorial, credem că sunteți pregătit să faceți anumite provocări. Puteți vedea aceste provocări ca o căutare de cunoaștere a cunoștințelor.

  1. Adăugați diferite stiluri de blocuri și configurații: obiectivul este să definiți mai multe blocuri cu proprietăți diferite, cum ar fi valori diferite ale scorurilor și numere diferite de rezultate pentru a ucide.
  2. Creați un nivel original: un al treilea nivel care este complet diferit de cel al tutorialului. Puteți utiliza un fundal diferit, o muzică diferită și un aspect diferit de bloc. Am dori să vedem capturile de ecran în secțiunea de comentarii!
  3. Implementați un mod multiplayer utilizând aceeași tastatură: adăugați logica necesară pentru a manipula intrările de la alte taste de tastatură și pentru a afișa scorul și a trăi pentru cel de-al doilea jucător în interfață.

Concluzie

Aceasta incheie aceasta serie de tutorial despre construirea Arkanoid folosind setul de instrumente Unity 2D. Am acoperit o mulțime de teren în această serie scurtă și acum ar trebui să știți suficient pentru a începe cu propriile dvs. jocuri 2D. Dacă aveți întrebări sau comentarii, ca întotdeauna, nu ezitați să ne lăsați o linie în comentarii.