În acest tutorial, vă vom arăta cum să profitați de noile instrumente 2D incluse în Unity pentru a crea un joc 2D.
În acest tutorial, veți învăța cum să creați un proiect Unity 2D și să creați un joc mobil utilizând C # și Unity.
Obiectivul jocului este de a trage o rază de teleportare la vaci înainte de a ajunge la siguranța hambarului.
În acest proiect veți învăța următoarele aspecte ale dezvoltării unității:
Deschideți Unitatea și selectați Proiect nou de la Fişier meniu pentru a deschide dialogul de proiect nou. Selectați un director pentru proiectul dvs. și setațiConfigurați valorile prestabilite pentru la 2D.
În pasul următor, vă prezentați interfața Unity. Setați proiectul pentru dezvoltarea mobilă, alegând Construiți setările de la Fişier meniu și selectarea platformei dvs. de alegere.
Unitatea poate construi pentru iOS, Android, BlackBerry și Windows Phone 8, ceea ce este minunat dacă intenționați să creați un joc mobil pentru mai multe platforme.
Deoarece suntem pe punctul de a crea un joc 2D, primul lucru pe care trebuie să-l facem după selectarea platformei pe care o vizăm este alegerea dimensiunii operei de artă pe care o vom folosi în joc.
iOS:
Deoarece Android este o platformă deschisă, există multe dispozitive diferite, rezoluții ale ecranului și densități de pixeli. Câteva dintre cele mai obișnuite sunt enumerate mai jos.
Și pentru văduve Telefon și BlackBerry:
Chiar dacă ne vom concentra pe platforma iOS din acest tutorial, codul poate fi folosit pentru a viza oricare dintre celelalte platforme.
În funcție de dispozitivul pe care îl vizați, este posibil să fie necesar să convertiți opera de artă la dimensiunea și densitatea pixelilor recomandată. Puteți face acest lucru în editorul dvs. de imagine preferat. Am folosit-o Reglați dimensiunea ... funcția în cadrul Unelte în meniul OS X previzualizare cerere.
Asigurați-vă că faceți clic pe butonul 2D din Scenă panou. De asemenea, puteți modifica rezoluția care este utilizată pentru a afișa scena în Joc panou.
Interfața cu utilizatorul jocului nostru va fi simplă. Puteți găsi operele de artă pentru acest tutorial în fișierele sursă ale acestui tutorial.
Puteți utiliza una din cele trei limbi în Unitate, C #, UnityScript, o limbă similară JavaScript în ceea ce privește sintaxa și nuu. Fiecare limbă are avantajele și dezavantajele sale, dar depinde de tine să decideți ce preferați. Preferința mea merge la sintaxa C #, deci este limba pe care o voi folosi în acest tutorial.
Dacă decideți să utilizați o altă limbă, asigurați-vă că ați aruncat o privire asupra exemplei Unity's Script Reference.
Unity a construit un nume pentru a fi o platformă excelentă pentru crearea de jocuri 3D pentru diferite platforme, cum ar fi Microsoft Xbox 360, Sony PS3, Nintendo Wii, web-ul și diverse platforme mobile.
Deși a fost întotdeauna posibilă utilizarea unității pentru dezvoltarea jocurilor 2D, nu a fost decât lansarea unității 4.3 că a inclus suport nativ 2D. Vom învăța cum să lucrăm cu imagini ca sprite în loc de texturi în pașii următori.
Voi folosi o serie de sunete pentru a îmbunătăți experiența jocului. Efectele sonore utilizate în acest tutorial pot fi găsite la Freesound.org.
Înainte de a începe codarea, trebuie să adăugăm activele noastre la proiectul Unity. Există mai multe moduri de a face acest lucru:
După finalizarea acestui pas, ar trebui să vedeți activele din proiectul dvs. bunuri dosar în Proiect panou.
Suntem gata să creăm scena jocului prin glisarea obiectelor către Ierarhie sau Scenă panou.
Începeți prin tragerea și plasarea fundalului în Ierarhie panou. Ar trebui apoi să apară în Scenă panou.
Deoarece Scenă panoul este setat să afișeze o vizualizare 2D, veți observa selectarea acestuia Camera principală în Ierarhie arată o previzualizare a ceea ce aparatul foto va afișa. De asemenea, puteți vedea acest lucru în vizualizarea jocului. Pentru a face vizibilă întreaga scenă, schimbați mărimea valoarea Camera principală la 1.6 în Inspector panou.
Nava este, de asemenea, un element static pe care jucătorul nu va putea să îl interacționeze. Poziționați-o în centrul scenei.
Selectați hambarul din bunuri panou și trageți-l în scenă. Poziționați-o așa cum este ilustrat în imaginea de mai jos.
Pentru a vă asigura că hambarul este anunțat când o vacă îl lovește - intră în hambar - trebuie să adăugăm o componentă, o Box Collider 2D pentru a fi precis.
Selectați hambarul din scenă, deschideți Inspector panou și faceți clic pe Adăugați componenta. Din lista de componente, selectați Box Collider 2D de la Fizica 2D secțiune. Asigurați-vă că verificați Este declanșator cutie.
Vrem ca vaca să reacționeze atunci când lovește ușa hambarului, așa că trebuie să facem ca ciocnitorul să fie mai mic. Deschide Inspector și schimbați mărimea și Centru valorile colliderului pentru a muta cutia mai aproape de ușa hambarului.
E timpul să scriem un cod. Trebuie să adăugăm un script astfel încât aplicația să poată răspunde coliziunii atunci când o vacă intră în hambar.
Selectați grajdul și faceți clic pe Adăugați componenta buton în Inspector panou. Selectați Script nou și numește-o OnCollision. Nu uitați să schimbați limba în C #.
Deschideți fișierul nou creat și adăugați următorul fragment de cod.
utilizând UnityEngine; utilizând System.Collections; clasa publica OnCollision: MonoBehour void OnTriggerEnter2D (altul Collider2D) if (other.gameObject.name == "vacă (Clone)") / * Redare sunet de salvare vacă * / audio.Play (); / * Distruge vacă * / Destroy (other.gameObject);
Fragmentul verifică o coliziune între obiectul la care este legat scriptul, hambarul și un obiect numit vaca (Clone)
, care va fi un exemplu de vaca prefabricat pe care o vom crea ulterior. Când are loc o coliziune, este redat un sunet și obiectele de vaca sunt distruse.
Pentru a reda un sunet atunci când o vacă lovește hambarul, trebuie mai întâi să atașăm sunetul la hambar. Selectați-l din Ierarhie sau Scenă vizualiza, faceți clic pe Adăugați componenta buton în Inspector și selectați Sursă audio de la Audio secțiune.
Debifați Joacă pe Trezeste și faceți clic pe micul punct din partea dreaptă, sub pictograma roată, pentru a selecta sunetul grajdului.
Puteți mări dimensiunea pictogramelor în interfața de utilizator a Unity (gizmos) dând clic pe Gizmos în Scenă și ajustați poziția cursorului.
Trageți graficul razei din bunuri panou la scena și adăugați un collider la ea. Acest lucru este necesar pentru a detecta o coliziune cu vacă nefericită. VerificăEste declanșator opțiune în Inspector panou.
Creați un nou script repetând pașii pe care i-am prezentat acum câteva momente. Denumiți scenariul Glonţși înlocuiți conținutul cu următorul fragment de cod:
utilizând UnityEngine; utilizând System.Collections; clasa publica Bullet: MonoBehavior public AudioClip cowSound; // Folosiți acest lucru pentru inițializare void Start () renderer.enabled = false; / * Efectuarea obiectului invizibil * / // Actualizarea se numește o dată pe cadru void Update () / * Obțineți intrarea principală * / dacă (Input.GetButton ("Fire1")) renderer.enabled = true; / * Face obiectul vizibil * / / * Redați sunetul razei * / audio.Play (); dacă (renderer.enabled == true) transform.position + = Vector3.down * (Time.deltaTime * 2); / * Verificați dacă există limite * / dacă (this.transform.position.y < -1.5) transform.position = new Vector2(0.08658695f, 0.1924166f); /* Return bullet to original position */ renderer.enabled = false; void OnTriggerEnter2D(Collider2D other) if (other.gameObject.name == "cow(Clone)") AudioSource.PlayClipAtPoint(cowSound, transform.position); /* Destroy the cow */ Destroy(other.gameObject); transform.position = new Vector2(0.08658695f, 0.1924166f); /* Return bullet to original position */ renderer.enabled = false;
Asta e mult cod, dar nu este complicat. Să vedem ce se întâmplă. În primul rând, creăm un AudioClip
instanță numită cowSound
, pe care o vom folosi pentru a stoca un fișier audio. Aceasta este doar o altă tehnică pentru a reda un sunet dacă nu doriți să adăugați două componente audio la obiect. Declarăm variabila ca fiind publică, astfel încât să putem accesa aceasta din Inspector. Faceți clic pe punctul mic din partea dreaptă a paginii cowSound și selectați fișierul audio.
Apoi facem raza invizibilă dezactivând redarea lui. Folosim același obiect pentru a putea salva resursele, ceea ce reprezintă o optimizare importantă pentru dispozitivele mai puțin puternice.
Detectăm atingeri pe ecran, ceea ce face ca raza să fie vizibilă și să redea sunetul cu raze (vezi mai jos). Dacă obiectul este vizibil, înseamnă că ar trebui să fie în jos pentru a lovi o vacă.
Există și cod pentru a detecta dacă raza se află în afara limitelor scenei. Dacă este cazul, repoziționăm-o, gata să tragă din nou (verifică razele X și y valori în Inspector).
Ultima parte verifică dacă raza atinge o vacă. În caz contrar, acesta joacă sunetul de vacă și distruge vaca. Raza este apoi invizibilă și repoziționată în poziția inițială, gata să redea.
Pentru a adăuga sunetul pentru rază, selectați-l în Ierarhie sau Scenă vizualiza și dă clic pe Adăugați componenta în Inspector panou. Selectați Sursă audio de la Audio secțiune. Debifați Joacă pe Trezeste și faceți clic pe punctul mic din partea dreaptă pentru a selecta fișierul de sunet.
Trageți graficul pentru vaca de pe bunuri și poziționați-o în scenă după cum se arată mai jos.
Pentru a detecta o coliziune, cel puțin unul dintre obiectele de coliziune trebuie să aibă a RigidBody2D componente asociate cu acesta. Deoarece vaca se poate ciocni cu hambar și cu raza, este mai bine să adăugați componenta la vaca.
De asemenea, trebuie să adăugăm un cedar la vacă, astfel încât să putem detecta coliziunile cu hambarul și raza. Asigurați-vă că verificați Este declanșator în caseta de selectare Inspector.
Adăugați o componentă de script la vacă și înlocuiți conținutul cu următoarele:
utilizând UnityEngine; utilizând System.Collections; clasa publica MoveCow: MonoBehavior public Vector3 moveSpeed; float public spawnTime = 2f; float public spawnDelay = 2f; // Folosiți acest lucru pentru inițializare void Start () moveSpeed = Vector3.left * Time.deltaTime; InvokeRepeating ("ChangeSpeed", spawnDelay, spawnTime); void ChangeSpeed () moveSpeed = Vector3 nou (Random.Range (-1, -2), 0, 0) * 0.05f; // Actualizarea se numește o singură dată pentru fiecare cadru de voce Update () transform.position + = moveSpeed;
MoveCow
clasa animă vaca pe ecran folosind o variabilă numită viteza de miscare
. InvokeRepeating
metoda schimba viteza vacei pentru ao face sprintata din momentul in care ajunge in centrul scenei. Acest lucru face jocul mai provocator.
Odată cu adăugarea componentelor necesare vacilor, este timpul să le convertim la a prefabricat. Ce este un prefabricat? Să consultați Manualul unității:
"Un Prefab este un tip de activ - un GameObject reutilizabil stocat în Project View. Prefaburile pot fi inserate în orice număr de scene, de mai multe ori pe scenă. instanțele sunt legate de Prefabul original și sunt, în esență, clone ale acestuia. Indiferent câte instanțe există în proiectul dvs., când faceți modificări în Prefab, veți vedea modificarea aplicată tuturor instanțelor. "
Dacă veniți din Flash și ActionScript, atunci acest lucru ar trebui să fie cunoscut. Pentru a transforma vaca într-o prefab, trageți vaca din Ierarhie panou la bunuri panou. Drept rezultat, numele în Ierarhie va deveni albastru.
Transformarea vacăi într-o prefabă ne permite să o reutilizăm, ceea ce este convenabil deoarece conține deja componentele necesare.
Scenariul Spawner este responsabil pentru ca vacile să apară. Deschideți MonoDevelop sau editorul C # preferat și creați un script nou:
utilizând UnityEngine; utilizând System.Collections; clasa publica Spawner: MonoBehavior public float spawnTime = 2f; float public spawnDelay = 2f; publice Vaca GameObject; // Utilizați acest lucru pentru inițierea void Start () InvokeRepeating ("Spawn", spawnDelay, spawnTime); void Spawn () / * Instanțiate o vacă * / GameObject clone = Instantiate (vacă, transform.position, transform.rotation) ca GameObject;
Noi numim InvokeRepeating
- metoda de a produce vaci cu spaŃii de reproducere utilizând valorile stabilite de spawnTime
și spawnDelay
. GameObject
vacă
este setat la public și este creat folosind Inspector. Faceți clic pe punctul mic din partea dreaptă și selectați Prefabul vacăi.
Pentru a instantiza prefabricatul de vaci, vom folosi graficul vaca pe care l-am adaugat scena acum cateva minute. Selectați-l și eliminați componentele. Apoi adăugați scriptul Spawner.
Este timpul să testați jocul. presa Comandă + P
pentru a juca jocul în Unitate. Dacă totul funcționează conform așteptărilor, sunteți pregătiți pentru pașii finali.
Când sunteți mulțumit de jocul dvs., este timpul să selectați Construiți setările de la Fişier meniu și faceți clic pe Setările playerului buton. Acest lucru ridică Setările playerului în Inspector panoului în care puteți regla parametrii pentru aplicația dvs..
Folosind grafica pe care ați creat-o mai devreme, puteți crea acum o pictogramă frumoasă pentru jocul dvs. Unitatea vă arată dimensiunile necesare, care depind de platforma pe care o construiți.
Imaginea de lansare sau de lansare este afișată când aplicația este lansată.
Odată ce proiectul dvs. este configurat corect, este timpul să revizuiți Construiți setările și faceți clic pe Construi Buton. Asta e tot ce este nevoie pentru a vă construi jocul pentru testare și / sau distribuție.
Dacă construiți pentru iOS, aveți nevoie de Xcode pentru a construi aplicația finală binară. Deschideți proiectul Xcode și alegeți Construi de la Produs meniul.
În acest tutorial, am aflat despre noile capabilități 2D ale unității, detectarea coliziunilor și alte aspecte ale dezvoltării jocurilor cu Unitatea.
Experimentați cu rezultatul și personalizați-l pentru a face jocul propriu. Sper că ți-a plăcut acest tutorial și l-am găsit de ajutor.