Preuzmite aplikaciju unity 3d za android. Korištenje Unity-a za razvoj aplikacija. Kako kreirati igrice u Unity-u

Razvoj igara za Android OS uređaje zahtijeva pristup sličan razvoju za iOS. S druge strane, hardver Android uređaja ne podliježe jasnim standardima, zbog čega je potrebno rješavati probleme koji izostaju pri radu sa iOS-om. Postoje i razlike između Android i iOS verzija Unity-a.

Priprema Android razvojnog okruženja

Prije nego što možete testirati svoje igre na uređaju, morat ćete pripremiti svoje razvojno okruženje. Konkretno, preuzmite i instalirajte Android SDK željene platforme i dodajte svoj uređaj u sistem (ovaj proces je drugačiji za Windows i Mac). Ovo je detaljno napisano na web stranici Android programera, a dodatne informacije može pružiti proizvođač vašeg uređaja. Budući da je ovo prilično kompliciran proces, pripremili smo malo uputstvo koje će vam pomoći da pripremite sve što vam je potrebno za razvoj. Ako trebate više informacija, možete ih dobiti na Android Developer Portalu.

Pristup Android funkcijama

Unity pruža API za pristup Android unosu i postavkama. Dostupne klase su dokumentovane na stranici Code for Android Assemblies.

Povezivanje C, C++ ili Java koda sa skriptama

Unity vam omogućava da pozivate funkcije napisane u C/C++ direktno iz skripti (Java funkcije se mogu pozvati indirektno). Da naučite kako pristupiti funkcijama iz izvornog koda iz Unity-a, posjetite stranicu za izgradnju Android dodataka.

Odstranjivanje okluzije (rezanje nevidljive geometrije)

Unity pruža podršku za uklanjanje okluzije, što je vrlo korisno kada se optimizira za mobilne platforme. Više informacija možete pronaći na stranici za uklanjanje okluzije.

Prilagođavanje početnog ekrana

Splash screen koji se prikazuje kada igra počne može se prilagoditi - pogledajte ovu stranicu za više informacija.

Rješavanje problema i prijavljivanje grešaka

Postoji mnogo razloga zašto se vaša aplikacija ruši ili ne radi ispravno. Naš vodič za rješavanje problema specifičnih za Android pomoći će vam da riješite uzroke grešaka u najkraćem mogućem roku. Ako nakon čitanja priručnika pretpostavite da je problem u Unity-u, trebali biste podnijeti izvještaj o grešci. Pogledajte ovu stranicu za upute.

Po čemu se Unity za Android razlikuje od desktop verzije

JavaScript sa jakim kucanjem

Za poboljšanje performansi u Android verziji Unity-a, dinamičko kucanje u JavaScriptu je uvijek onemogućeno (kao da se #pragma strict automatski primjenjuje na svaku skriptu). Ovo je važno zapamtiti ako prenosite projekat na Android sa starijih platformi i ako naiđete na greške u kompilaciji, problem prije svega treba tražiti u kucanju. Takve greške se obično lako rješavaju osiguravanjem da su tipovi svih varijabli eksplicitno specificirani ili izbačeni tokom inicijalizacije.

Dok Unity Android podržava DXT/PVRTC/ATC teksture, Unity će dekomprimirati teksture u RGB(A) format tokom rada ako ove metode kompresije nisu podržane na određenom uređaju. Ovo može ozbiljno utjecati na performanse GPU renderiranja, pa se preporučuje korištenje ETC formata. To je de facto standard za Android i trebali bi ga podržavati svi moderni uređaji. S druge strane, ETC ne podržava alfa kanal, a ponekad će 16-bitne RGBA teksture biti najbolji izbor u smislu kvaliteta, veličine i brzine prikazivanja tamo gdje je alfa kanal potreban.

Pregleda postova: 19 374

Razgovarali smo o tome kako možete kreirati vlastitu igru ​​na Androidu koristeći Unreal Engine. U ovom članku ćemo pogledati još jedan jednako popularan motor za razvoj igara - jedinstvo.

Unity je vrlo poznat motor među indie programerima. U stvari, to je višeplatformski motor koji vam omogućava da se razvijate 3D- i 2D-igre. Karakteristika koja izdvaja Unity od ostalih motora je nizak ulazni prag za početnike, dok ima bogat skup alata za profesionalce. Cross-platform vam omogućava da razvijate aplikacije za bilo koju platformu, od desktop igara do mobilnih.

Odvojeno, vrijedi spomenuti sistem pretplate, jer Unity nije potpuno besplatan proizvod. Postoji nekoliko vrsta pretplata:

  • Lični. Besplatna verzija koja sadrži sve glavne karakteristike motora. Ima sljedeće ograničenje: prihod po godini ili iznos prikupljenih sredstava ne smije prelaziti 100000$ .
  • Plus. Per 35 dolara mjesečno obezbeđeni su različiti izveštaji i analitika, kao i mogućnost promene početnog ekrana, 20% -ti popust na kupovinu u Asset Store i razne manje beneficije. Ima sljedeće ograničenje: prihod za godinu ili iznos prikupljenih sredstava ne smije biti veći 200000$ .
  • Pro. Per 125 dolara mjesečno uključuje sve prednosti verzije Plus i dodatno profesionalnu uslugu i vrhunsku podršku. Nema ograničenja u prometu ili iznosu sredstava.
  • Odvojene verzije za poslovanje (koje koriste velike kompanije).

Stoga bi indie programeri sa malim budžetima trebali biti zadovoljni verzijom Lični ili Plus inače ćete se morati pretplatiti Pro. U ovom članku ćemo koristiti besplatna verzija za prvu vožnju.

Korak 1 Instalirajte Unity

Da biste započeli instaliranje Unity-a, trebate otići na web stranicu Unity Store-a, gdje će se od vas tražiti da odaberete vrstu pretplate. Kao što je gore pomenuto, mi biramo Lični.

Tada će se od vas tražiti da prihvatite uslove korištenja i preuzmete instalater. Također možete provjeriti Zahtjevi sustava da radi sa Unity.

Nakon pokretanja instalacijskog programa, od vas će se tražiti da odaberete koje komponente želite instalirati. Pošto moramo da kreiramo Android aplikaciju, označićemo polje za Podrška za Android Build. Također, ako želite, umjesto sa Unity-om, možete instalirati Zajednica Visual Studio 2017 za programiranje na C#.

Nakon toga, ostaje samo da odaberete putanju instalacije i počnete instalirati Unity.

Korak 2: Registracija i postavljanje Unity

Nakon završetka instalacije i pokretanja Unity-a, od nas se traži da se prijavimo sa svojim nalogom.

Zatim će se od vas ponovo tražiti da odaberete pretplatu, a mi ćemo se također fokusirati na Personal. U ovom slučaju, moraćete da potvrdite da je godišnji prihod kompanije manji od 100.000 dolara ili da se Unity koristi u svrhe obuke.

Na kraju se predlaže polaganje male ankete u kojoj treba da odgovorite čime se bavite i u koju svrhu instalirate Unity.

Korak 3. Kreirajte novi projekat

Nakon što smo konfigurirali Unity, dolazimo do ekrana za odabir / kreiranje projekta. Kliknite ovdje Novo da kreirate svoje novi projekat.

Nakon toga, u prozoru koji se pojavi, od vas se traži da unesete naziv projekta i direktorij u kojem će se nalaziti. Također ne zaboravite označiti polje 3D da koristite uređivač u 3D modu.

Kada završite s ovim, kliknite Kreirajte projekat da kreirate projekat. Nakon toga, otvorit će se prozor uređivača sa unaprijed generiranom scenom.

Nećemo se još baviti zamršenostima programiranja i uzeti za primjer zavrsila igra. Za ovo postoji Asset Store, koji sadrži ogroman broj gotovih modela, animacija, zvukova (pa čak i igara), plaćenih i besplatnih.

Da biste otvorili Asset Store, trebate u meniju Prozor izabrati Asset Store(kombinacija ključeva ctrl-9).

Otvoriće se prozor prodavnice. Unesite u traku za pretraživanje " primjer igre u stilu flappy bird" i otvorite besplatni primjer koji ćemo koristiti u našem projektu.

Klikanje Skinuti i na taj način nakon što ga preuzmete, možete ga uvesti u svoj projekat. Da biste to učinili, kliknite Uvoz, nakon čega će se pojaviti upozorenje da će se postavke projekta promijeniti nakon uvoza.

Nakon što pristanete na uvoz, vidjet ćete prozor u kojem trebate odabrati koje komponente želite uvesti. Odaberite sve i kliknite Uvoz.

Kada se uvoz završi, vidjet ćete nove datoteke u pregledniku projekata. Ovo su fajlovi igre. Da biste otvorili scenu u uređivaču, proširite Flappy Bird Style - scene i dvaput kliknite na Main.

Kao rezultat, scena igre će se pojaviti u prozoru 3D uređivača.

Možete provjeriti kako igra radi direktno u Unityju klikom na dugme igrati iznad prozora uređivača.

Korak 4 Konfigurišite Android alate

Bilješka: ako koristite android studio, tada već imate sve instalirano neophodne komponente i tako možete bezbedno da pređete na sledeći korak.

Da biste sastavili rezultirajuću igru ​​na Androidu, trebate instalirati sljedeće alate:

  • Java Development Kit (JDK). Možete ga preuzeti sa Java web stranice. Klikom na link vidjet ćete na samom vrhu Java platforma (JDK), kliknite na Skinuti pored natpisa, zatim izaberite svoj operativni sistem i počnite sa preuzimanjem. Nakon toga samo slijedite upute instalatera.
  • Android SDK. po najviše na jednostavan način da biste instalirali najnoviju verziju, morate preuzeti Android Studio uz koji dolazi ovaj SDK. Da biste to učinili, idite na web stranicu Android Studio i kliknite Preuzmite Android Studio. Instalacijski program Android Studio instalira osnovne komponente Android SDK potrebne za razvoj Androida.

Korak 5. Pripremite projekat za pokretanje

Prvo, morate promijeniti razvojnu platformu u Android. Da biste to učinili, u Unityju otvorite meni Datoteka i odaberite Postavke izgradnje.

U prozoru koji se pojavi odaberite Android a zatim pritisnite platforma prekidača.

Prekidač platforme nam govori da ćemo napraviti Android aplikaciju. To znači da kada napravimo aplikaciju, Unity će kreirati APK fajl. Prebacivanje platforme također prisiljava Unity da ponovo uveze svu imovinu u projektu. Ovo neće dugo trajati na malim projektima, ali imajte na umu da ova operacija može potrajati dugo na velikim projektima.

Sada moramo dati ime paketa za aplikaciju.

Bilješka: Naziv paketa je jedinstveni identifikator za aplikaciju i napisan je u obrnutom DNS stilu u formatu com.CompanyName.ProductName. Nakon što se aplikacija objavi na Google Playu, naziv paketa se više ne može mijenjati.

Da biste to učinili, idite na meni Uredi i biraj Postavke projekta - Player.

Na desnoj strani Unity-a otvorit će se prozor s mnogo različitih postavki, kao što su verzija aplikacije, ciljni i minimalni SDK, odabir ikona itd. Ovdje nam treba u bloku Ostale postavke nađi Identifikacija i postavite naziv paketa u polje naziv paketa. Također možete promijeniti druge postavke ako želite.

Sada ostaje samo odrediti putanju do Android SDK i JDK. Da biste to učinili, idite na meni i odaberite Edit-Preferences.

U prozoru koji se pojavi idite na Eksterni alati i na poljima SDK i JDK navedite odgovarajuće putanje, a zatim zatvorite prozor.

Korak 6: Izrada i pokretanje aplikacije

Vrijeme je da napravite svoju prvu Unity aplikaciju. Da biste to uradili, izaberite iz menija Datoteka - Postavke izgradnje. Otvoriće se prozor u koji ćete morati da dodate scenu koju želite da sastavite. Pošto već imamo otvorenu ovu scenu u editoru, samo kliknite Dodajte otvorene scene da ga dodate u sklop, nakon što ga dodate vidjet ćete ga na listi scena.

Ostaje samo pritisnuti Build, nakon čega će Unity početi graditi aplikaciju. Prije toga, od vas će se možda tražiti da odaberete mapu u koju će se pohraniti prikupljeni fajlovi aplikacije, kao i naziv APK datoteke.

Bilješka: u ovom trenutku, ako imate alfa verziju instaliranu u Android SDK Alati za izgradnju(verzija 28.0.0-rc1), prilikom izgradnje Gradle će dati grešku. Da biste to popravili, jednostavno uklonite ovu verziju iz Android SDK-a.

Kao rezultat toga, izgrađena APK datoteka će se pojaviti u mapi koju ste naveli, spremna za instaliranje na emulatoru ili na stvarnom uređaju.

Hajde da vidimo šta je unutar izgrađenog APK-a. Da bismo to učinili, koristimo uslužni program APK Analyzer, koji je uključen u Android Studio,

Nekomprimirana veličina APK datoteke je 21.1MB, u komprimiranom 20.9MB. Kao što možete vidjeti iz grafikona, većinu volumena zauzimaju biblioteke trećih strana koje je dodao Unity. Onda unutra imovine locirani su svi resursi koji se koriste u montiranoj sceni. File classes.dex sadrži samo 89 klase i 479 metode.

Štaviše, ako pogledate AndroidManifest.xml, aplikacija se sastoji od jedne aktivnosti.

Zaključak

To je sve. U ovom članku naučili smo kako instalirati i konfigurirati Unity, a također smo napravili našu prvu Android aplikaciju.

Unity je motor na kojem je većina moderne igre na različitim platformama. Kroz engine je zaista moguće kreirati igre koje su orijentisane na rad na računarima (Windows, Linux, MacOS), mobilni telefoni, tablet računari (Android, iOS) pa čak igraće konzole PlayStation, Xbox, Nintendo.

Kako kreirati igre u Unity-u?

Unity se zasniva na konceptu orijentisanom na komponente. Zapravo, svaka igra se sastoji od mase predmeta razrijeđenih dodatnim komponentama. Na primjer, prilikom kreiranja platformera kreiramo GameObject, na njega dodatno prilažemo grafičku komponentu koja je zadužena za prikaz lika i kontrolnu komponentu koja omogućava kontrolu nad likom pomoću miša, tastature, džojstika ili ekran na dodir. Motor ne nameće ograničenja na broj takvih modula. Možemo dodati onoliko komponenti u GameObject koliko je potrebno. Sav rad na motoru se zasniva na samom kreiranju GameObject-a i primjeni odgovarajućih komponenti na njih.

Početnici mogu biti zavedeni prividnom jednostavnošću procesa, iako to nije slučaj. Da biste stvorili jedinstvenu i popularnu igru, morate napisati puno komponenti od nule. Preciznije, u okruženju Unity, ovo se zove skripta. Izvorni skriptni jezik je C#, ali se delimično koriste i JavaScript i Boo (izrezana verzija Pythona). Stvaranje vlastitih komponenti nije lako, čak bi se moglo reći da je to složena procedura, direktno vezana za klasično programiranje. Bez dovoljnog nivoa znanja u programiranju biće teško.

Podržane platforme

Mnogi veliki projekti preferiraju Unity zbog ogromne liste platformi kompatibilnih sa motorom. Gotova aplikacija se može pokrenuti na bilo kom operativnom sistemu računara, popularnim mobilnim platformama i SmartTV-u. Šta možemo reći, čak i igre pretraživača i aplikacije za određene platforme ( kao Tizen OS) su pretežno razvijeni u Unity.

Međutim, ovdje nije sve tako glatko. Ako je potrebno, možete pisati specifične algoritme bazirane na niskom nivou koda, za isti Android morate imati temeljno poznavanje Jave.

Isto važi i za iOS. Još jedna karakteristika iOS-a je da je za njega moguće razvijati samo sa računara ili tableta kompanije Apple. U nedostatku Macbooka ili sličnog uređaja, izlazak igre će brzo stati i Unity nema nikakve veze s tim, Apple sam nameće slično ograničenje. Zaključak je jednostavan: ako je u planu razvoj iOS-a, trebali biste unaprijed odabrati odgovarajući uređaj za montažu.

Kako i gdje razviti igru ​​na motoru?

Možemo da sprovedemo dug proces razvoja igara kako unutar Windows-a tako i Mac OS X-a. Već postoje verzije editora za Linux, ali za sada ne možemo računati na njihov stabilan rad. Programer provodi većinu vremena kreirajući igru ​​unutar Unity editora. Imamo još dosta vremena za pisanje koda skripte, možemo ga kreirati ili u standardnom MonoDevelopu ili u bilo kojem uređivaču treće strane. Sada aktivno koriste Visual Studio, kao i Sublime Text, ali samo uz odgovarajuću konfiguraciju.

Razvoj mobilne aplikacije je jedno od najprofitabilnijih zanimanja u kompjuterskoj industriji. Kreiranje Android igre košta stotine ili hiljade dolara, a zarada može doseći i do milion dolara. U tom smislu, mnogi ljudi su zainteresovani za razvoj aplikacija za telefon. U ovom ćete članku naučiti kako napraviti Android igru ​​od nule pomoću računala, koji motor i dizajner je bolje odabrati.

nijedan uspešna igra ne može bez lijepe grafike, pa je stvaranje dizajna jedna od najvažnijih faza razvoja. Dizajn na Android OS-u se implementira korištenjem „dokumenta o dizajnu“ ili dizajnerskog dokumenta. Morate početi stvarati igračku s njenim detaljnim proučavanjem. Fajl sadrži:

  1. Objektni modeli;
  2. Funkcionalne specifikacije;
  3. Sadržaj igre;
  4. Interface.

Razmotrimo svaku od tačaka detaljnije.

Objektni modeli

Ovo su informacije o funkcionalnosti svake stavke. Objektni modeli su odgovorni za mogućnost kupovine i prodaje predmeta, kao i za poboljšanje karakteristika igre likova.

Funkcionalne specifikacije

Opisuje igru, glavne karakteristike svakog lika. Takođe opisuje karakteristike stavke igre- oružje, kompleti prve pomoći, oklopi i drugo. U suštini, funkcionalne specifikacije su pravila po kojima proces igre. Što je ovaj odjeljak bolje razrađen, lakše će biti kreirati kvalitetnu Android igru.

Sadržaj igre

Ovo je popunjavanje teksta igre. Opisuje dijaloge likova i koje oružje se može koristiti za nanošenje štete, koliko zdravlja će uzeti udarac, koje karakteristike će se povećati pri korištenju različite opreme. Takođe sadrži Detaljan opis svaku stavku.

Interface

Interfejs je način na koji će korisnik komunicirati sa igrom. Sadrži dugmad pomoću kojih možete upravljati likom i sekcije menija: na primjer, igra, rezultat, postavke, najbolji igrači, pomoć. Ako nemate iskustva u kreiranju Android aplikacija, prije kreiranja vlastite, preuzmite sa Play Marketa i analizirajte popularne igre i prenesite najbolja rješenja u vaš projekat.

Game engine

Srž svake igre je motor. to softver, što vam omogućava da ga razvijete i pokrenete. Sadrži čitav niz programa, uključujući mašinu za renderovanje, mašinu za fiziku, zvuk, animaciju i još mnogo toga. Kako bi olakšali proces pisanja programa, programeri treće strane kreiraju vlastite motore za igre posebno za Android aplikacije.

Svaki od njih nudi različite karakteristike: neke su dizajnirane za 3D, druge za 2D, može se podržati više platformi. Postoji ogroman broj takvih motora, ali ako ste početnik, bolje je odabrati jedan od najpopularnijih, jer će tamo biti prisutne sve potrebne funkcije.

UDK

Moment 2d/3d

Šta je dizajner igara?

Constructor je program koji kombinuje motor igre i integrisano razvojno okruženje. Konstruktor čini proces razvoja dostupnim ljudima koji nemaju vještine programiranja. Neki od dizajnera vam omogućavaju da kreirate igre određenih žanrova, drugi imaju maksimalnu funkcionalnost, ali koštaju mnogo više novca. Za kreatore mobilnih aplikacija početnika, izbor dizajnera je jedan od najvažnijih trenutaka, jer će sudbina buduće aplikacije ovisiti o njenim mogućnostima.

Konstruktor vam omogućava da kreirate igre različitih žanrova za Windows, Android i iOS. Ponude veliki izbor gotove lokacije, objekte, likove i dizajn zvuka, tako da stvaranje prve Android igre neće oduzeti puno vremena. Korisnici upoznati sa programskim jezicima JS i C++ mogu koristiti ugrađeni GML. Jedini nedostatak je što program nije preveden na ruski.

Zaključak

Kreiranje Android igre nije lak, ali vrlo profitabilan posao. Ako odlučite da razvijete igru ​​i zaradite na njoj, prvo razradite ideju. Zatim napišite “dizajn dokument” i odlučite se za motor igre koji može maksimalno iskoristiti svoj potencijal. Nakon toga možete nastaviti direktno sa kreiranjem aplikacije u konstruktoru.

Video

Da biste saznali više o procesu stvaranja Android igara, pogledajte seriju videozapisa posvećenih ovoj aktivnosti.

Kako brzo napisati Android igru ​​sa Unity-om

U ovom trenutku, svako može postati uspješan programer mobilnih igara ili aplikacija bez velikih napora. Primjer takvog slučaja je Dong Nguyen, koji je razvio Flappy Bird. Igra nije imala nikakvu složenu mehaniku ili grafiku, ali to je nije spriječilo da postane popularna i svom kreatoru donosi pedeset hiljada dolara dnevno. Međutim, u igri nije bilo ništa posebno. Sve što je bilo potrebno za uspjeh je bilo biti na pravom mjestu u pravo vrijeme i malo sreće. Slične stvari se mogu dogoditi i danas, samo trebate pravu ideju.

Kako bismo pokazali koliko je lako napisati nešto poput ovoga, danas ćemo napisati našu vlastitu Flappy Bird koristeći Unity za samo 10 minuta.

karakter igre

Prvo kreirajte novi projekat i provjerite je li odabrana 2D opcija.

Učitajte svoj ptičji duh u scenu. Ne zaboravite da upalite maštu!

Zatim prilagodite veličinu spritea po svom ukusu tako što ćete ga povući iza ugla u željenom smjeru. Sprajt bi trebao biti vidljiv u hijerarhijskom prozoru na lijevoj strani. U njemu su vidljivi svi objekti u sceni, a trenutno bi trebalo da budu samo dva: kamera i ptica.

Prevucite kameru do ptice i pustite je. Kamera bi trebala biti ispod ptice, što znači da je kamera sada "dijete" ptice. Sada će pozicija kamere biti fiksirana u odnosu na pticu. Ako se ptica kreće naprijed, kamera radi isto.

Ponovo odaberite pticu u sceni ili u hijerarhijskom prozoru. Vidjet ćete listu opcija i atributa na desnoj strani u prozoru pod nazivom Inspektor. Ovdje možete upravljati različitim varijablama vezanim za određeni objekt.

Sada kliknite na Dodaj komponentu. Odaberite Physics2D > Rigidbody2D - to je spreman set upute za primjenu gravitacije na naš karakter. Kliknite na Ograničenja u ovom panelu, a zatim odaberite zamrznuti rotaciju Z. Ovo će spriječiti pticu da se okreće s kamerom.

Na isti način, dodajte poligonski kolajder koji govori Unityju gdje su granice lika. Pritisnite Play i pogledajte kako sprite, zajedno sa kamerom, beskrajno pada.

Za sada sve ide dobro!

Sada je vrijeme da počnete upravljati likom, jer to neće biti teško.

Prvo morate kreirati C# skriptu. Kreirajte fasciklu za nju (desni klik negde u aktivama i kreirajte fasciklu "Skripte"), kliknite desnim tasterom miša i izaberite Kreiraj > C# skripta .

Nazovimo to "Karakter". Dvaput kliknite na nju da biste je otvorili u svom IDE-u, bilo da je MonoDevelop ili Visual Studio. Zatim dodajte sljedeći kod:

Javna klasa Character: MonoBehaviour ( public Rigidbody2D rb; public float moveSpeed; public float flapHeight; // Ovo je za inicijalizaciju void Start () ( rb = GetComponent(); ) // Ažuriranje se poziva jednom po kadru void Update () ( rb .velocity = novi Vector2(moveSpeed, rb.velocity.y); if (Input.GetMouseButtonDown(0)) (rb.velocity = new Vector2(rb.velocity.x, flapHeight); ) if (transform.position.y > 18 ||transform.position.y< -19) { Death(); } } public void Death() { rb.velocity = Vector3.zero; transform.position = new Vector2(0, 0); } }

Ovaj kod radi dvije stvari. To čini da se lik kreće naprijed brzinom koju definiramo u inspektoru i ostavlja utisak ptice u letu. Metoda Update() se poziva više puta tokom igre, tako da će sve što stavite ovdje raditi kontinuirano. U ovom slučaju, našem objektu dodajemo određenu brzinu. Varijabla rb je RigidBody2D skripta koju smo ranije primijenili na naš objekat, tako da kada pišemo rb.velocity referiramo se na brzinu objekta.

Dodir na ekran Unity tumači kao klik mišem ako koristite mobilni uređaj. Nakon pritiska, tjeramo lik da se malo podigne.

Varijabla moveSpeed ​​bit će odgovorna za brzinu kretanja, a varijabla flapHeight - za povećanje visine leta ptice nakon svakog klika. Budući da su ove varijable javne, možemo ih promijeniti izvan skripte.

Metoda Death() je također deklarirana kao javna, što znači da je drugi objekti i skripte mogu pozvati. Ova metoda jednostavno vraća poziciju karaktera na početak. Također će se koristiti svaki put kada lik leti previsoko ili nisko. Uskoro ćete shvatiti zašto je proglašen javnim. Linija rb.velocity = Vector3.zero; potrebno za uklanjanje zamaha - ne želimo da lik pada sve brže i brže nakon svake smrti, zar ne?

Sada možete izaći iz IDE-a i dodati skriptu kao komponentu karakteru. Da biste to učinili, odaberite našu pticu i kliknite Dodaj komponentu > Skripte > Znak. Sada možemo definirati moveSpeed ​​i flapHeight u inspektoru (za to služe javne varijable). Dodijeli varijabilne vrijednosti 3 i 5, respektivno.

I još nešto: u inspektoru morate dodati oznaku liku. Da biste to učinili, kliknite na mjesto na kojem piše Tag: Untagged, a zatim odaberite Player sa padajuće liste.

Prepreke

Sada dodajmo prepreke: cijevi. Neko nađe pečurke u cevima, a neko pronađe sopstvenu smrt.

Povucite sprite cijevi u scenu tamo gdje želite da bude prva prepreka i nazovite je pipe_up.
Sada kreirajmo novu skriptu pod nazivom Pipe:

Javna klasa Pipe: MonoBehaviour ( karakter privatnih znakova; // Potreban za inicijalizaciju void Start () ( character = FindObjectOfType(); ) // Ažuriranje se poziva jednom po okviru void Update () ( if (character.transform.position.x - transform.position.x >

Dodajte ovu skriptu u pipe sprite na isti način kao i prije. Tako će se cijev vratiti na ekran nakon što napusti svoju lijevu ivicu. Ovdje još nismo ništa uradili, ali vratit ćemo se na to.

Metoda OnCollisionEnter2D() se poziva svaki put kada cev stupi u interakciju sa karakterom. Nakon toga se poziva ranije kreirana metoda Death() koja vraća igrača na početnu tačku.

Dakle, imamo jednu cijev koja će s vremena na vrijeme nestati i ponovo se pojaviti na drugom kraju ekrana. Udari je, umrijet ćeš.

obrnute cijevi

Trenutno imamo samo jedan pipe sprite. Dodajmo još jednu. Da biste to uradili, kliknite desnim tasterom miša na hijerarhijski prozor, kliknite na Novi 2D objekat > Sprite, a zatim izaberite sprite koji želite da koristite. Još je lakše jednostavno ponovo prevući datoteku u scenu.

Imenujte ovaj sprite pipe_down . U Inspektoru, pod Sprite Renderer, izaberite opciju Okreni Y da biste cijev okrenuli naopako. Dodajte isti RigidBody2D.

Sada napišimo novu C# skriptu pod nazivom PipeD. Imat će sličan kod:

Javna klasa PipeD: MonoBehaviour ( karakter privatnih znakova; //Ovo je potrebno za inicijalizaciju void Start() ( character = FindObjectOfType(); ) // Ažuriranje se poziva jednom po okviru void Update() ( if (character.transform.position. x - transform.position.x > 30) ( ) ) void OnCollisionEnter2D(Collision2D other) ( if (other.gameObject.tag == "Igrač") ( character.Death(); ) ) )

Prefabs

Dakle, ovaj kod nam je dovoljan da napravimo cijelu igru. Mogli bismo pomjeriti cijevi na desnu stranu ekrana svaki put kada nestanu, ili kopirati i zalijepiti onoliko cijevi koliko želimo kroz igru.

Ako krenete prvim putem, onda se pobrinite da cijevi budu odmah nakon nasumične generacije, i bilo bi teško održati pošten tok stvari. Nakon smrti lika, mogli su se pojaviti u kilometrima od prve cijevi!

Ako krenete drugim putem, onda će se sve završiti prekomjernom potrošnjom memorije, s posljedičnim usporavanjem igre i ograničenom vrijednošću ponavljanja, jer. sve ostaje na istom mestu svaki put.

Umjesto toga, koristimo prefab. Jednostavno rečeno, naše cijevi ćemo pretvoriti u šablone koje onda možemo koristiti za učinkovito kreiranje više cijevi po želji. Ako ovdje ima programera, onda razmotrite skriptu Pipe kao klasu, a cijevi kao instance ovog objekta.

Da biste to učinili, kreirajte novi folder "Prefabs". Zatim prevucite pipe_up i pipe_down iz prozora hijerarhije u folder.

Svaki put kada prevučete objekat iz ove fascikle u scenu, on će imati ista svojstva, tako da ne morate stalno da dodajete komponente. Štaviše, ako promenite veličinu komponente u fascikli, to će uticati na sve cevi u igri i nećete morati da menjate veličinu svake od njih pojedinačno.

Kao što možete zamisliti, ovo će uvelike uštedjeti naše resurse. To također znači da možemo komunicirati s objektima iz koda. Možemo instancirati naše cijevi.

Prvo, dodajte ovaj kod u uslovni izraz u metodi Update() skripte Pipe koju smo ostavili praznim:

Void Update () ( if (character.transform.position.x - transform.position.x > 30) ( float xRan = Random.Range(0, 10); float yRan = Random.Range(-5, 5); Instantiate (gameObject, novi Vector2(character.transform.position.x + 15 + xRan, -10 + yRan), transform.rotation); Destroy(gameObject); ) )

Ovo je potrebno za kreiranje instance našeg gameObject. Rezultat je nova identična kopija. U Unity-u, kad god koristite riječ gameObject, ona se odnosi na objekat za koji je skripta trenutno vezana - u našem slučaju, cev.

Regeneriramo naše lule u nasumičnim varijacijama kako bismo ih učinili zabavnijim.

Ali umjesto da radimo sve isto u skripti PipeD, mi generišemo oba objekta na istom mjestu. Tako možemo lako postaviti položaj druge cijevi u odnosu na prvu. To također znači da nam treba manje koda za PipeD.

Kreirajte javni gameObject pod nazivom pipeDown. Zatim ažurirajte kod ovako:

If (character.transform.position.x - transform.position.x > 30) (float xRan = Random.Range(0, 10); float yRan = Random.Range(-5, 5); float gapRan = Random.Range (0, 3); Instantirajte(gameObject, novi Vector2(character.transform.position.x + 15 + xRan, -11 + yRan), transform.rotation); Instantiate(pipeDown, novi Vector2(character.transform.position.x + 15 + xRan, 12 + gapRan + yRan), transform.rotation); Destroy(gameObject); )

Vratite se na Unity i prevucite pipe_down prefab iz prefabs foldera (ovo je važno!) na mjesto gdje piše "Pipe Down" (primijetite kako je naš kamil slučaj zamijenjen razmakom) na pipe sprite pipe up . Ako se sećate, mi smo definisali Pipe Down kao javni gameObject, koji nam daje mogućnost da odredimo šta je ovaj objekat sa bilo kog mesta - u ovom slučaju preko inspektora. Odabirom prefab-a za ovaj objekt, osiguravamo da će, kada se instancira cijevi, uključiti sve atribute i skriptu koje smo ranije dodali. Ne stvaramo samo sprite, već ponovo kreiramo objekt sa sudaračem koji može ubiti lik.

Sve što ćemo dodati na istom mjestu u PipeD skripti je samo Destroy(gameObject) , tako da će se cijev samouništeti kada ode s lijeve strane ekrana.

Ako sada započnete igru, ekran će automatski napredovati i umrijet ćete ako udarite u bilo koju od cijevi. Odletite dovoljno daleko i te cijevi će nestati i ponovo se pojaviti ispred.

Nažalost, postoji velika udaljenost između cijevi i ekran izgleda prazan. Mogli bismo ovo popraviti dodavanjem nekih prefabova na našu scenu kako bismo kreirali cjevovod cijevi koje se stalno mrijeste. Međutim, bilo bi bolje generirati cijevi u skripti. Ovo je važno, jer će u suprotnom, nakon smrti lika, cijevi na početku puta biti uništene i ponovo će se formirati prazan prostor.

Na ovaj način možemo kreirati prvih nekoliko cijevi tokom svakog učitavanja igre i vratiti sve na svoje mjesto nakon smrti lika.

Beskrajni let

Sada kreirajmo javne varijable pipe_up i pipe_down u skripti Character. Ovo će vam dati mogućnost da referencirate kreirane objekte prevlačenjem prefab-a na objekt karaktera, baš kao kada smo dodali pipe_down u Pipe skriptu.

Moramo dodati ove varijable:

Public GameObject pipe_up; javni GameObject pipe_down;

Zatim ćemo napisati metodu poput ove:

Public void BuildLevel() ( Instantirajte(pipe_down, novi Vector3(14, 12), transform.rotation); Instantiate(pipe_up, new Vector3(14, -11), transform.rotation); Instantiate(pipe_down, new Vector3(26, 14), transform.rotacija); Instantirajte(pipe_up, novi Vector3(26, -10), transform.rotation); Instantiate(pipe_down, novi Vector3(38, 10), transform.rotation); Instantiate(pipe_up, novi Vector3( 38, -14), transform.rotation); Instantiate(pipe_down, new Vector3(50, 16), transform.rotation); Instantiate(pipe_up, new Vector3(50, -8), transform.rotation); Instantiate(pipe_down, novi Vector3(61, 11), transform.rotation); Instantiate(pipe_up, new Vector3(61, -13), transform.rotation); )

Pozvaćemo ga jednom u metodi Update() i jednom u metodi Death().

Nakon što igra počne, poziva se Update() i naše cijevi se postavljaju prema datoj konfiguraciji. Zbog toga će prvih nekoliko prepreka uvijek biti na istom mjestu. Nakon smrti igrača, cijevi će se vratiti na ista mjesta.

Vratite se na scenu u Unity-u i izbrišite dvije cijevi koje su sada tamo. Vaša "igra" će izgledati kao prazan ekran sa pticom. Pritisnite Play i cijevi će se pojaviti, nakon prvih nekoliko, njihov položaj će biti određen nasumično.

Konačno

To smo i uradili cijelu igru! Dodajte brojač rezultata, pokušajte ga učiniti originalnijim i povećavajte težinu igre kako napredujete. Takođe, neće biti suvišno napraviti meni. Još jedna dobra ideja je uništiti cijevi na ekranu nakon smrti lika. Kada završite s tim - smatrajte da je spreman za puštanje Play prodavnica igra u džepu! Jednom davno slična igra učinio je još jednog programera veoma bogatim, što dokazuje da ne morate biti programski genije ili imati bogatog izdavača iza sebe da biste bili uspješni. Treba vam samo dobra ideja i deset minuta!

Želite da pišete Android aplikacije, ali ne znate odakle da počnete? Zatim pogledajte naš sjajni vodič za učenje razvoja Androida.



 
Članci on tema:
Sve što trebate znati o SD memorijskim karticama kako ne biste zeznuli kada kupujete Connect sd
(4 ocjene) Ako nemate dovoljno interne memorije na svom uređaju, možete koristiti SD karticu kao internu memoriju za svoj Android telefon. Ova funkcija, nazvana Adoptable Storage, omogućava Android OS-u da formatira eksterne medije
Kako okrenuti točkove u GTA Online i više u GTA Online FAQ
Zašto se gta online ne povezuje Jednostavno je, server je privremeno isključen/neaktivan ili ne radi. Idite na drugu Kako onemogućiti online igre u pretraživaču. Kako onemogućiti pokretanje aplikacije Online Update Clinet u Connect manageru? ... na skkoko znam kad ti smeta
Pikov as u kombinaciji s drugim kartama
Najčešća tumačenja karte su: obećanje ugodnog poznanstva, neočekivana radost, ranije nedoživljene emocije i senzacije, primanje poklona, ​​posjeta bračnom paru. As srca, značenje karte kada karakterišete određenu osobu koju ste
Kako pravilno napraviti horoskop za preseljenje Napravite mapu po datumu rođenja uz dekodiranje
Natalna karta govori o urođenim osobinama i sposobnostima njenog vlasnika, lokalna karta govori o lokalnim prilikama koje pokreće mjesto radnje. Podjednake su po važnosti, jer život mnogih ljudi prolazi od mjesta rođenja. Pratite lokalnu kartu