Kako ustvariti osnovno igro Android z Unity

v tej podobni vadnici bomo preučili, kako ustvariti osnovno Android igra z Unity.



Zahteve:

  • Enotnost
  • Dober urejevalnik besedil, kot je NotePad ++ (neobvezno, vendar priporočljivo)
  • Android SDK
Če ga še nimate, najprej začnite s prenosom in namestitvijo Unity SDK in tudi Android SDK. Android SDK potrebujemo, da lahko APK igre preizkusimo v okolju Android.

Zaženite Unity in ustvarite nov projekt. Naj bo 2D projekt.



Obstaja več plošč, s katerimi se lahko seznanite - plošča Hierarchy, ki bo vsebovala vse elemente naše scene (scena = ne glede na 'raven', na kateri trenutno delate). Potem je zavihek Igra, ki se uporablja za igranje / preizkušanje igre, medtem ko je znotraj urejevalnika, na desni strani pa je plošča Inspector, kjer boste urejali različne stvari, kot so razsvetljava, fizika itd.



Prva stvar, ki jo želimo narediti, je ustvariti sprite - to bo naš glavni lik (ki ga nadziramo). Lahko si narišete svoj sprite, na primer narišete kvadrat z očmi, ali pa zgrabite sprite iz interneta - samo poskrbite, da gre za datoteko .PNG (prozorno ozadje).



Povlecite in spustite svoj sprite v glavno okno scene (največje okno) - prikazal se bo tudi na plošči Hierarchy na levi.

Tako bomo zdaj ustvarili nekaj ploščadi - to so lahko preprosti kvadrati, saj jih bomo lahko enostavno spremenili, da naredimo stene in druge ploščadi.

Torej, preprosto ustvarite nov kvadratni 'sprite' in ga povlecite in spustite v okno Scene, kot ste to storili s svojim sprite znakom.



Zdaj moramo Unityju naročiti, naj fiziki preda našega glavnega junaka - kliknite svoj glavni lik sprite (v oknu Scene naj bo označen z modro barvo), nato na plošči Inspector poiščite »GameObjects«.

Kliknite »Dodaj komponento> Fizika 2D> RigidBody2D«. To bo samodejno dodalo fiziko vašemu spriteju, ki bi ga sicer morali skriptirati v drugem SDK-ju.

Želimo preprečiti, da bi se glavni lik sprite zavrtel brez nadzora - zato poiščite zavihek Omejitve na plošči Inspector (pri čemer je glavni sprite še vedno označen v oknu Scene) in potrdite polje »Zamrzni vrtenje Z«.

Če pritisnete gumb »Predvajaj«, bi moral vaš glavni lik sprite pasti z neba in samo neskončno pasti - za to bomo poskrbeli kasneje, vendar samo upoštevajte, kako smo lahko enostavno uporabili fiziko. Fizika, ki smo jo uporabili, je odvisna od oblike, na katero se nanaša - tako, da če bi na primer isto fiziko uporabili za kroglo, bi se vrtela.

Prav tako želimo popraviti svojo usmerjenost, da preprečimo, da se lik vrti in prosto giblje. V izbirniku poiščite 'omejitve' z izbranim predvajalnikom in potrdite polje, da zamrznete vrtenje Z. Zdaj znova kliknite predvajanje in najti boste, da igralec zdaj pada z neba v neskončno pogubo.

Da naš glavni lik sprite ne bo neskončno padel, bomo morali dodati trkalnik. To je v bistvu samo trden oris oblike, ki jo bomo dodali glavnemu znaku sprite. Označite svoj glavni sprite lik, kliknite “Add Component> Physics 2D> BoxCollider2D.

Zdaj naredite enako natančno s platformo, ki ste jo prej ustvarili. Vaš glavni sprite lik bi se zdaj moral 'trčiti' s platformo in tam ostati.

Zdaj želimo zagotoviti, da bo kamera sledila vašemu glavnemu sprite-liku - znotraj scene bi že moral biti objekt kamere. To želite povleči na vrhu glavni sprite lik.

To je še posebej pomembno, če ustvarjate datoteko 3D tekač , nekaj kot Naklon kjer potrebujete kamero, da nenehno ostane za primarnim predmetom igre (vaš glavni sprite lik).

Zdaj pojdite na ploščo Hierarchy in na seznamu GameObjects želite povleči kamero spodaj glavni sprite lik (Player GameObject). Tako bo glavni lik spriteja ' starš kamere. Torej, kadar se Player GameObject premika po zaslonu, mora slediti kamera.

Torej, za to vadnico igre bomo samo ustvarili osnovno neskončno igro tekačev, nekako tako Zaženi 3 , kjer bo vaš glavni lik tekel čez zaslon in se izogibal oviram (ali 'igra končana', če boste zadeli oviro '. To bo trajalo nekaj skriptov, večina jih bo v tem priročniku.

Z desno miškino tipko kliknite mapo »Sredstva« in ustvarite novo mapo - poimenujte jo Skripte . Zdaj z desno miškino tipko kliknite to novo mapo in pritisnite »Ustvari> C # Script« in jo poimenujte PlayerControls . Ta skript bo opredelil vedenje našega glavnega znaka sprite.

Ko dvakrat kliknete ta novi skript, ga bi morali odprite v Visual Studio - druga možnost (in po mojih osebnih željah) je, da jo lahko uredite v nečem, kot je NotePad ++.

V skriptni datoteki bi morala biti že nekaj kode 'kotlične plošče' - v bistvu je to skript, ki ga je treba pustiti pri miru ali ga prilagoditi vašim potrebam in nam bo prihranil veliko časa. Torej bomo dodali nov predmet.

Nad vrstico void Start ():

javnosti Rigidbody2D rb;

Naslednji bit kode, ki ga moramo dodati, bo v okviru Start () in se uporablja za iskanje togega telesa - v bistvu Unityju naročimo, naj poišče fiziko, ki smo jo priložili GameObjects (naš glavni sprite lik), in Start () bo izveden, ko bo ustvarjen nov predmet ali skript.

Potem poiščite fizični objekt.

rb = GetComponent< Rigidbody2D > ();

In to vrstico boste dodali v Update ()

rb. hitrost = novo Vector2 (3, rb.velocity.y);

Posodobitev () se nenehno osvežuje, zato se bo vsaka koda, dodana tja, neprestano izvajala (razen če je objekt uničen). Torej, kar smo storili, naročimo skriptu, da želimo, da ima trdo telo nov vektor z enako hitrostjo na osi Y (rb.velocity.y), vendar s hitrostjo 3 na vodoravni osi. V prihodnosti lahko uporabite tudi FixedUpdate () ’ ki je podoben, a drugačen, saj lahko tam nadzirate količino posodobitve / osveževanja skripta.

Shranite skript in se vrnite v Unity, nato pa kliknite svoj glavni sprite znak, da ga označite. Na plošči Inspector pojdite na Add Component> Scripts in dodajte skript, ki smo ga pravkar shranili. Zdaj, ko kliknete gumb Predvajaj, se mora glavni lik sprite neprestano premikati proti robu platforme.

Ustvarjanje kontrolnikov za vnos predvajalnika

Ker gre torej za neskončno tekmovalno igro z ovirami, moramo za igralca dodati nadzor, na primer gumb za skok.

Znova odprite skript od prej in dodali bomo to dodatno kodo:

 če (Input.GetMouseButtonDown (0)) {rb.velocity = novo Vector2 (rb.velocity.x, 5); }

To boste postavili v metodo Update () in v bistvu Unity pove, da bo igralec ob kliku gumba miške (kar bo v Androidu prevedeno kot dotik zaslona) 'preskočil'. ' v zraku. To je zato, ker smo na os Y dodali hitrost z vrednostjo 5 (višja vrednost bi seveda pomenila večji skok).

Če kodiranja ne poznate preveč, smo uporabili Če izjava, ker Če je v bistvu vrsta navodil 'naredi ali ne' - dobesedno pravi ČE se to zgodi, naredite ta ukaz . Torej, če predvajalnik ne klikne miške (ali se ne dotakne zaslona Androida), potem se skript očitno ne bo zagnal.

Nadaljujte in kliknite gumb »Predvajaj« in se pred nadaljevanjem prepričajte, da deluje pravilno.

Nato bomo dodali svoje ovire (ki lahko 'uničijo' sprite glavnega junaka), rezultat igre in meni 'game over'.

Če ste igro doslej preizkusili, je edina težava, ki smo jo imeli do zdaj, ta, da s pritiskom na gumb za skok, ki smo ga ustvarili, skoči lik, ne glede na to, ali je utemeljen ali ne - to je v bistvu Flappy Birds in ne tekač, kot je želimo. Ampak to bomo popravili.

V skript dodajte ta del kode nad metoda Update ():

 javnosti Preoblikovanje groundCheck; javnosti Transform startPosition; javnosti   float groundCheckRadius; javnosti LayerMask whatIsGround; zasebno   bool onGround; In nato dodajte naslednjo vrstico v metodo posodabljanja nad če stavek: onGround = Physics2D.OverlapCircle (groundCheck.position, groundCheckRadius, whatIsGround); Nato boste to naslednjo vrstico spremenili tako, da bo vključevala »&& onGround« če (Input.GetMouseButtonDown (0) && onGround) {Torej naš celoten skript bi moral biti v osnovi videti tako: javnosti   razred   PlayerControls : Mono vedenje { javnosti Rigidbody2D rb; javnosti Preoblikovanje groundCheck; javnosti Transform startPosition; javnosti   float groundCheckRadius; javnosti LayerMask whatIsGround; zasebno   bool onGround; praznino   Začni () {rb = GetComponent (); } praznino   Nadgradnja () {rb.velocity = novo Vector2 (3, rb.velocity.y); onGround = Physics2D.OverlapCircle (groundCheck.position, groundCheckRadius, whatIsGround); če (Input.GetMouseButtonDown (0) && onGround) {rb.velocity = novo Vector2 (rb.velocity.x, 5); }}}

Da bi razložili, kaj smo storili, smo ustvarili novo 'preobrazbo', ki pomeni položaj v prostoru igralnega sveta. Nastavili smo njen polmer in Unityju naročimo, naj preveri, ali se polmer prekriva z našo 'zemeljsko' plastjo - in tako, če je naš radij sinhroniziran s 'zemljo', bi naš lik lahko skočil in če bi Smo že v zraku od skoka, ne bi smeli več skočiti. V bistvu, onGround bo res če poimenovana preobrazba groundCheck se prekriva s talno plastjo. Upajmo, da je to smiselno.

Torej shranite skript in se vrnite v Unity, in opazili boste, da je bilo po označevanju predvajalnika Inspektorju dodanih več možnosti. To so javne spremenljivke in jih lahko prilagodimo svojim željam.

Zdaj z desno miškino tipko kliknite Hierarchy in ustvarite nov prazen predmet ter ga povlecite tako, da je sprite pod glavnim znakom v glavnem oknu Scene - postavite ta prazen predmet tam, kjer želimo, da se zazna tla. Preimenujte predmet v »Check Ground« in ga nato povlecite pod igralni predmet igralca, kot smo to storili prej s kamero (da med predmeti ustvarimo odnos med starši in otroki). Zdaj bo prazen predmet sledil glavnemu znaku, tako kot kamera, in neprekinjeno preverjal talno razdaljo. Cam

Zdaj izberite sprite glavnega znaka in pojdite na nadzorno ploščo - povlecite objekt Check Ground v prostor, imenovan »groundCheck«. Položaj 'preoblikovanja' mora biti enak položaju tega novega predmeta in tam, kjer piše 'Polmer', naj bo 0,1.

Določiti moramo talno plast. Preprosto izberite zemeljski teren in v Inspectorju poiščite gumb za »Layer: Default« (to je spustno polje) in izberite »Add Layer«.

Zdaj izberite 'ground' kot plast za našo platformo in ponovite to za vse druge platforme v oknu igre. Tam, kjer na našem predmetu sprite glavnega znaka piše “What is Ground”, izberite tudi talno plast.

Kar smo storili, je naročiti skriptu predvajalnika, da izvede preverjanje - če majhna točka na zaslonu se prekriva s čimer koli, ki se ujema s plastjo, bo znak skočil le, če je to res.

Game Over na meniju Collision in Game

Torej, da zaključimo vse, končne stvari, ki jih želimo storiti, so A: Zaradi trčenja z ovirami se igra konča in B: Ustvari zaslon menija »game over« z gumbom za ponovno predvajanje.

V bistvu želite storiti naslednje:

  1. Dodajte a Igralec predmet in dodeli a togo telo in a trkalnik po vaši izbiri.
  2. Dodajte Sovražnik predmet in dodeli a togo telo in a trkalnik po vaši izbiri. (in neobvezno, dodajte Oznaka 'Sovražnik' do njega)
  3. Ustvari novo C # skript in ga dodajte kot komponento v Igralec (ali uporabite kateri koli skript, ki je priložen predvajalniku, ni ga treba ustvariti, če ga že imate)
  4. Dodajte to v svoj skript:
praznino OnCollisionEnter ( Trčenje coll) { Odpravljanje napak . Dnevnik ('Trk'); // Preverite, ali sploh zazna trk, če deluje, lahko odstranite to vrstico if (coll.gameobject. oznaka == 'Sovražnik') { // preveri, ali ima predmet, s katerim je trčil vaš predvajalnik, oznako z imenom 'Enemy