Oglas

Iznenađujuća značajka internetske ekonomije je porast indie videoigrica. Nakon ekskluzivne domene ateljea s trostrukim A brojem tisuće ljudi, razvijeni su brojni setovi alata koji su donijeti moderne resurse za razvoj igara u ruke pojedinaca ili malih, ad-hoc kolekcija programera i dizajnera. Prethodno smo razgovarali o tome najbolje indie igre 10 Indie igara je tako dobro da ćete zaboraviti da su uopće indiMeđutim, možda će biti vremena kada želite nešto drugačije od indie norme. Igra koja slijedi indie vrijednosti, no napravljena je po kvaliteti po kojoj su vrhunske AAA igre poznate. Naslovi poput ... Čitaj više , pa provjerite da li za njih potražite neku inspiraciju o tome što se može postići sa alatima poput Unityja.

Ovaj je vodič dostupan za preuzimanje kao besplatni PDF. Preuzmite Programiranje igre s jedinstvom: sada vodič za početnike. Slobodno kopirajte i dijelite ovo sa svojim prijateljima i obitelji.

Ovi timovi za razvoj indie igara pokazali su okretnost i toleranciju na rizik što im, u mnogim slučajevima, omogućuje da ubrzaju gameplay inovacije brže od svojih velikih proračunskih kolega. Tijekom posljednjih godina premijerno su predstavljeni brojni šokantno uspješni indie naslovi, uključujući

instagram viewer
Minecraft, Zaborav, i Super mesni dečko, a čak i ako nemate vještinu za izradu ovakvih igara, to možete napravite igru ​​koristeći Buildbox Kako napraviti videoigru u tjednu koristeći BuildboxPostoji program koji razvoj igara čini nevjerojatno laganim čak i onima koji apsolutno nemaju iskustva u dizajniranju videoigara. Zove se Buildbox. Evo zašto biste ga trebali isprobati. Čitaj više .

U brzo razvijajućem krajoliku razvoja indie igara, Jedinstvo postalo je nešto što je de-facto standard: niski troškovi, jednostavna upotreba i širok skup značajki čine ga idealnim za brzi razvoj igara. Jedinstvo je toliko fleksibilno da to možete i vi napravite svoje prilagođene kontrolere igara Kako napraviti prilagođeni kontroler igre s Arduinom i JedinstvomJeste li ikad željeli dizajnirati vlastiti kontroler za igre? Lakše je nego što mislite! Čitaj više s malo sam uradi sam!

Čak i veliki studiji poput CCP (Developers of Eve Online) koristite ga za brzo prototipiranje koncepata igara. Unity nudi "game engine u kutiji" - fizički i rendering motor s kukama za nekoliko scenarističkih jezika, prilagodljiv gotovo bilo kojem žanru videoigre.

Dok Unity pruža vizualni uređivač za manipuliranje okruženjem igre, Unity nije alat za stvaranje igara 'zero programiranje'. Od vas se traži da programirate kako biste postigli rezultate, ali vam isto tako pruža mnogo fleksibilniji i snažniji alat nego što je to mogao svaki program za stvaranje igara.

Jedinstvo neće raditi umjesto vas, ali to znatno smanjuje prepreku za ulazak. Počevši u potpunosti od početka s C ++ i OpenGL-om, mogu proći dani da bi se došlo do točke gdje se na ekranu doista nešto prikazuje. Korištenjem Unity-a potrebno vam je desetak sekundi. Jedinstvo na brze, intuitivne načine stavlja osnovne elemente stvaranja igara u ruke početnika programera.

Danas ću vas voditi kroz sve što trebate znati da biste napravili igru ​​u Unityju, koja je podijeljena na deset glavnih poglavlja:

§1 - Verzije jedinstva

§2 - Instaliranje jedinstva

§3 - kratak uvod u objektno orijentiranu paradigmu

§4 – Osnove jedinstva

§5 – Primjer: Osnovni elementi igre

§6 - Pisanje teksta u jedinstvu

§7 – Primjer: skripta pong

§8 - istraživanje dokumentacije / učenje više

§9 - Izgradnja vaše igre / sastavljanje u samostalnu aplikaciju

§10-Završne napomene

1. Verzije jedinstva

Jedinstvo dolazi u dva osnovna okusa: pro verzija i besplatna verzija. Tamo su broj razlika, ali, šire gledano, pro verzija podržava mnoštvo vizualnih poboljšanja (poput mekih sjenki u stvarnom vremenu i naknadna obrada) i velik broj relativno manjih značajki koje su izuzetno korisne za složenije igre.

U skladu s tim, za većinu relativno jednostavnih igara koje možda želite izgraditi, besplatna verzija Unityja sasvim je odgovarajuća. U nastavku ćemo detaljnije razložiti ključne razlike za one koji su zainteresirani.

1.1 Cijene

Besplatna verzija Jedinstva je, naravno, besplatna. Međutim, postoji nekoliko ograničenja: besplatna verzija Unitya ne može se licencirati nijednoj tvrtki s godišnjim prihodom većim od $100,000. Iako su takve organizacije izvan opsega ovog vodiča, ako sumnjate da biste mogli postati takva organizacija, vjerojatno je pametno proći za Pro verziju.

Pro verzija Jedinstva je $75 mjesec dana, ili $1500 za stalnu licencu i nema ograničenja u onome što možete raditi s igrama stvorenim s njom. Na raspolaganju je i 30-dnevno besplatno probno razdoblje koje ćemo koristiti u ovom vodiču kako bismo vam pružili što potpuniji pregled dostupnih značajki. Dostupna je i jednogodišnja studentska licenca putem Studica za $129.

1.2 Značajke

U besplatnoj verziji Jedinstva nema mnogih značajki. No, najvažnije razlike su sljedeće: besplatnoj verziji Unity-a nedostaje niz mogućnosti prikazivanja koje dopuštaju ljepše, brže pokretane igre (LOD podrška, naknadna obrada prostora na ekranu, napredne sjene, meke sjene u stvarnom vremenu i odloženi renderiranje). Također mu nedostaje puna Mehanizam animacijski sustavi neke AI alate.

Općenito, za složene, velike projekte ili projekte gdje je grafička izvedba važna, pro verzija je vrijedna. Koristim pro verziju, jer razvijam igre virtualne stvarnosti za Oculus Rift Oculus Rift pregledVirtualna stvarnost nije nova, ali je konačno pristupačna i unutar našeg razumijevanja. Nakon četiri godine i dva razvojna prototipa, stiglo je konačno potrošačko izdanje Oculus Rift. Čitaj više , a podrška za nakon obrade na zaslonu je potrebna za ispravnu interakciju sa slušalicama.

2. Instaliranje Jedinstva

Jedinstvo je jednostavno instalirati. Možete preuzeti izvršnu datoteku sa unity3d.com/get-unity/download.

Nakon preuzimanja pokrenite ga i slijedite upute za instalaciju. Kada je instalacija završena, pojavit će se prozor pod nazivom "aktiviraj svoju licencu Unity". Označite potvrdni okvir "aktiviraj besplatnu 30-dnevnu probu Unity Pro", a zatim "OK".

Čestitamo! Sada imate 30-dnevno suđenje Unity Pro-a. Kad probno razdoblje istekne, ako ne želite kupiti profesionalnu verziju, možete se prebaciti na besplatnu verziju i zadržati postojeći sadržaj.

3. Kratki uvod u objektno orijentiranu paradigmu

Prije nego što započnemo s Jedinstvom, važno je da malo pređemo osnove. Jedinstvo podržava oboje C # i JavaScript za programiranje igara 7 jezika za razvoj jedinstva u jedinstvu: Koji je najbolji?Želite započeti razvoj igara u Unityu? Trebat će vam poznavanje jednog od tih jezika koji su kompatibilni s Jedinstvom. Čitaj više ; radićemo s C # za ovaj vodič.

Prvo, ako nikad prije niste programirali, ostavite ovaj vodič i provesti nekoliko dana radeći kroz Microsoftov program C # Language Primer dok se ne osjećate ugodno koristeći jezik za jednostavne zadatke.

Ako želite nešto malo drugačije od C # (ali ne nužno i jezik koji možete koristiti u Unityju), pogledajte naš vodič za šest najlakših programskih jezika za početnike 6 najlakših jezika za programiranje za učenje za početnikeNaučiti programirati znači pronalaženje pravog jezika jednako koliko i postupak edifikacije. Slijedi prvih šest najlakših programskih jezika za početnike. Čitaj više .

Ako ste prije programirali na imperativnom ili objektno orijentiranom jeziku, poput C ili Java, obrišite temeljni premaz i upoznajte se kako se C # razlikuje od drugih jezika koje ste koristili u prošlosti. Bilo kako bilo, ne nastavljajte s vodičem dok se ne osjećate ugodno u rješavanju jednostavnih problema sa C # (na primjer, ako bih pitao ako želite napisati program koji ispisuje prvih stotinu osnovnih brojeva, trebali biste biti u mogućnosti pisati taj program bez savjetovanja Google).

Najvažniji pojam koji ovdje treba shvatiti je objektno orijentirana paradigma Odakle je "Objektno orijentirano" programiranje dobilo svoje ime?Objektno orijentirana nije samo slučajna glasina koju čujete u programskim krugovima. Postoji razlog iza imena - ali što? Pridružite mi se dok istražujem neke osnove programskih koncepata i objašnjavam ... Čitaj više (skraćeno kao OOP). U objektno orijentiranim jezicima programi se dijele na funkcionalne jedinice koje se nazivaju objekti. Svaki objekt ima svoje privatne varijable i funkcije. Pozvane su funkcije specifične za objekt metode.

Ideja ovdje je modularnost: izoliranje svakog objekta i prisiljavanje drugih predmeta na interakciju s njim pomoću njegovih metoda možete smanjiti broj mogućih nenamjernih interakcija - i, proširenjem, bube. Također možete izraditi predmete koje kasnije možete ponovo koristiti bez izmjena. U Jedinstvu ćete graditi te objekte i pričvrstiti ih entiteti igre (čije će ponašanje njima upravljati).

Predmeti su instancirani od klase: klasa je samo datoteka koja postavlja definiciju vašeg objekta. Dakle, ako želite Mook objekt koji rukuje AI neprijateljem u vašoj igri, napisali biste klasu "Mook" i zatim tu datoteku dodali svakom neprijateljskom entitetu. Kada pokrenete igru, svaki će neprijatelj dobiti primjerak objekta 'Mook'.

Prilaganje nove skripte objektu izgleda ovako:

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 1

Prvi, odaberite objekt i idite na Inspektor. Klikni na Dodajte komponentu dugme.

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 2

Ići nova skripta, upišite željeno ime i kliknite stvoriti i dodati.

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 3

Sada imate novu skriptu koju možete urediti dvostrukim klikom na nju!

Datoteka klase izgleda ovako:

korištenje UnityEngine; javna klasa Mook: MonoBehaviour {zdravlje privatnog plovka; void Start () {zdravlje = 100; } void Update () {if (health> 0) {/ * Potražite igrača ako na putu naiđete na igrača, ubijte ga ako vas ustrijeli, uklonite slučajnu količinu zdravlja * /}} }

Razložimo ovo:

  • Korištenje UnityEngine: Ovaj redak govori C # da želimo koristiti Unityove biblioteke koje nam omogućuju povezivanje s mehanizmom igre Unity.
  • Javna klasa Mook: MonoBehaviour:Ovaj redak deklarira klasu i njeno ime - Mook.
  • Zdravlje privatnog plovka: Ovo deklarira varijablu privatne klase (koja se može promijeniti samo iz klase). Varijabla je dobila vrijednost u Početak.
  • Void Start (): Ovim se proglašava metoda nazvana Početak. Start je posebna metoda koja se pokreće samo jednom, kada se igra u početku pokrene.
  • Ažuriranje praznine (): Ažuriranje je još jedna posebna metoda, koja se pokreće na svakom okviru. Ovdje će ići većina vaše logike igara.
  • // ako na putu sretnete igrača, ubijte ga: Ova linija je komentar (C # zanemaruje bilo koji redak koji započinje dvostrukom kosom kosom crtom). Komentari se koriste da se podsjetite što određeni bitovi koda rade. U ovom se slučaju ovaj komentar koristi kako bi se zagovarao složeniji blok koda koji zapravo čini ono što komentar komentira.

Zajedno s Početak i Ažuriraj, možete vlastite metode koristiti gotovo bilo kojim nazivom. Međutim, metode koje stvorite neće se pokrenuti ako ih se ne pozove. Proglasimo metodu za hipotetičku klasu koja se zove addTwoNumbers što dodaje dva broja zajedno:

javni plutati addTwoNumbers (float a, plutaj b) {return a + b; }

Time se proglašava javna (dostupna drugim objektima) metoda koja vraća float, nazvanu addTwoNumbers, koji kao ulaz ulazi uz dva plovka (naziva se i b). Zatim vraća zbroj dviju vrijednosti kao svoj izlaz.

Pozivanje ove metode iz iste klase (recimo, iznutra Ažuriraj) izgleda ovako:

rezultat plutanja = addTwoNumbers (1, 2);

Pozivanje metode iz druge klase je slično:

instanca addTwoNumbers; float rezultat = instance.addTwoNumbers (1, 2);

Opet, ovo samo stvara instancu naše klase, pristupa odgovarajućoj metodi i puni je brojevima koje želimo dodati, a rezultat pohranjuje u proizlaziti. Jednostavan.

Ako je vaša skripta spojena na objekt koji ima posebna svojstva (poput emiter čestica) kojem se ne može pristupiti pod uobičajenim skupom GameObject parametara, možete odabrati tretirati je kao drugu vrstu entiteta igre pomoću GetComponent metoda.

Sintaksa za to izgleda ovako:

GetComponent().Igra();

Ako vam ništa od toga nije poznato, vratite se i prođite kroz C # primer. To će vam uštedjeti mnogo frustracije dok nastavimo.

4. Osnove jedinstva

U ovom ćemo dijelu proći svoj put kroz osnovnu mehaniku motora Unity. Tijek rada u Jedinstvu ide ovako:

  1. Stvorite entitet za posluživanje uloge u igri (prazno GameObjects mogu se koristiti za apstraktne logičke zadatke).
  2. Zapišite ili pronađite datoteku klase i dodajte je entitetu kao skriptu (koristeći Dodajte komponentu gumb u inspektor pogled.
  3. Trčanje > test > otkloniti neispravnost > ponoviti dok ne uspije i prijeđe na sljedeći element igre.

Jedinstvo dolazi s brojnim karticama osnovnog prikaza koje se mogu na različite načine postaviti na ukus korisnika. Velika petorka su:

  1. Igra: prikazuje pokretačku instancu igre s kojom možete komunicirati i testirati.
  2. Scena: pruža statičku inačicu svijet igre.
  3. Inspektor: omogućuje vam da modificirate pojedine subjekte u svijetu igara tako da ih odaberete u urednik kartica.
  4. Projekt: omogućuje vam pregledavanje datoteka projekta i povlačenje modela, materijala i drugih resursa u urednik za njihovo postavljanje u svijet igre.
  5. Hijerarhija: ova kartica prikazuje sve predmete u svijetu, omogućujući vam pronalazak udaljenih objekata u sceni i roditeljske cjeline jedni drugima klikom i povlačenjem.

Pogledajte dijagram u nastavku za lokacije svih ovih stvari:

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 0

4.1 Jedinstveni entiteti

4.1.1 mrežice

Mreže su put 3D geometrija zastupljen je u Jedinstvu. Možete upotrebljavati ugrađen Unity primitivan predmete (kocke, sfere, cilindre itd.) ili uvezite vlastite 3D modele iz paketa za modeliranje poput Miješalica Početak rada s blenderom: 7 fantastičnih vodiča za novorođenče3D modeliranje je izvrstan način za vježbanje kreativnosti, istovremeno održavajući kontakt sa svojom tehničkom stranom. Evo nekoliko nevjerojatnih besplatnih tutorijala. Čitaj više ili Maya Učenje Maje 2016: Gdje započetiMaya je alat koji se koristi za 3D animaciju, ali dolazi s nevjerojatno strmom krivuljom učenja. Koji je dobar nastavni materijal tu? Čitaj više . Unity podržava razne 3D formate, uključujući .fbx, i .3ds.

Osnovni alati za upravljanje mrežama su tipke za skaliranje, rotaciju i prijevod u gornjem lijevom kutu sučelja. Ovi gumbi dodaju upravljačke ikone modelima u prikazu uređivača, koji se zatim mogu koristiti za upravljanje u prostoru. Da biste promijenili teksturu ili fizička svojstva objekta, odaberite ih i koristite inspektor pogled analizirati materijal i kruto tijelo elementi.

4.1.2 Elementi GUI-ja

Tradicionalni GUI-ovi i tekst mogu se prikazati pomoću gumba Tekst GUI-ja i the Tekstura grafičkog sučelja GameObjects u uređivaču. Međutim, robusniji i realniji način za rukovanje elementima UI je korištenje 3D tekst i četverokut GameObjects (s prozirnim teksturama i neosvijetljenim prozirnim sjenilom) za postavljanje HUD elemenata u svijet igre kao cjeline.

U hijerarhija pogledajte, te elemente igre mogu se povući na glavnu kameru kako bi ih učinili djecom, osiguravajući da se pomiču i okreću kamerom.

Elementi GUI-a (tekst i teksture) mogu prilagoditi svoju veličinu i razmjeru pomoću odgovarajućih polja na kartici inspektora.

4.1.3 Materijali

Materijali su kombinacija tekstura i alati za sjenčanje Objašnjeno pet važnih uvjeta igranja na računaluAko igrate igru ​​na konzoli, obrađuju se tehnički detalji. Neki igrači to preferiraju, ali PC igrači često uživaju veći nadzor nad očima igre ... Čitaj više , i može se povući izravno na objekte igre na kartici projekta. Veliki broj sjenila dolazi s Unity Pro i možete prilagoditi teksturu vezanu uz njih na kartici Inspector za objekt na koji su primijenjeni.

Da biste uvezli teksturu, pretvorite je u .jpg, .png, ili .bmpi povucite je u imovina mapu u direktoriju projekata Unity (koja se pojavljuje u Moji dokumenti prema zadanim postavkama). Nakon nekoliko sekundi, u uređivaču će se pojaviti traka za učitavanje. Kada se dovrši, moći ćete pronaći sliku kao teksturu ispod okvira projekt kartica.

4.1.5 Svjetla

Svjetla su GameObjects koji projiciraju sjaj na svijet. Ako na vašoj sceni nema svjetla, svi su poligoni crtani na istoj razini svjetline, a svijetu daju ravni, isprani izgled.

Svjetla se mogu postaviti, zakrenuti i imati nekoliko unutarnjih karakteristika koje možete prilagoditi. intenzitet klizač kontrolira svjetlinu svjetla i opseg kontrolira kako brzo izblijedi.

Smjernice u prizorski prizor prikazuju vam maksimalni domet osvjetljenja. Igrajte se s obje postavke da biste postigli željeni učinak. Možete prilagoditi i boju svjetla, uzorak (kolačić prikazana na površini svjetlost je ukazana, a kakva se bljeskalica pojavljuje na ekranu kada se izravno gleda svjetlost. Kolačić se može koristiti za lažiranje realističnijih obrazaca svjetla, stvaranje dramatičnih lažnih sjenki i simuliranje projektora.

Tri glavne vrste svjetla su mjesto, točka, i usmjeren.

Spot svjetla imaju lokaciju u 3D prostoru i projiciraju svjetlost samo u jednom smjeru u konusu promjenljivog kuta. Ovo je dobro za svjetiljke, reflektore i, općenito, daju precizniju kontrolu osvjetljenja. Spot svjetla mogu bacati sjene.

Točka svjetla imaju lokaciju u 3D prostoru i ravnomjerno bacaju svjetlost u svim smjerovima. Pokazna svjetla ne bacaju sjene.

Svjetla usmjerenjaKonačno, koriste se za simulaciju sunčeve svjetlosti: svjetlost projiciraju u pravcu kao da je beskonačno daleko. Usmjerena svjetla utječu na svaki objekt u sceni i mogu stvarati sjene.

4.1.6 Sustavi čestica

Sustav čestica je GameObject koja stvara i kontrolira stotine ili tisuće čestica istovremeno. Čestice su mali, optimizirani 2D objekti prikazani u 3D prostoru. Sustavi čestica koriste pojednostavljeno prikazivanje i fiziku, ali mogu prikazati tisuće entiteta u stvarnom vremenu bez mucanja, što ih čini idealnim za dim, vatru, kišu, iskre, čarobne učinke i još mnogo toga.

Postoji puno parametara koje možete ugađati da biste postigli ove efekte, a možete im pristupiti tako što ćete mrijestiti sustav čestica pod uređivač komponenata > odabir sustava čestica > otvaranje kartice inspektora. Možete promijeniti veličinu, brzinu, smjer, rotaciju, boju i teksturu svake čestice, te postaviti većinu tih parametara da se mijenjaju tijekom vremena.

Ispod sudar atribut, ako ga omogućite i postavite prostor za simulaciju na svijet dobit ćete čestice koje će se sudariti sa predmetima u svijetu, a koji se mogu koristiti za brojne realne efekte čestica, uključujući kišu, pokretnu vodu i iskre.

5. Primjer: Osnovni elementi igre

Za ovaj tutorial napravit ćemo jednostavnu igru pong - nešto što smo prije nekoliko puta pokrivali u „uradi sam“:

  • Arduino klasični pong Kako ponovno stvoriti klasičnu pong igru ​​koristeći ArduinoPong je prva video igrica koja je stigla na masovno tržište. Prvi put u povijesti pojam "video igre" uveden je u obiteljski dom, zahvaljujući Atari 2600 -... Čitaj više
  • Arduino OLED Pong Arduino Retro igranje s OLED zaslonomJeste li se ikad zapitali koliko je potrebno da napišete svoje retro igre? Koliko je Pong lako kodirati Arduino? Čitaj više

U ovom ćemo dijelu prelaziti na organiziranje osnovnih elemenata - scenarij će napisati kasnije.

Prvo, razgradimo igru ​​Pong na njegove osnovne sastavnice. Prvo, trebaju nam dva vesla i lopta. Kugla leti izvan zaslona, ​​pa ćemo htjeti mehanizam da je resetira. Također želimo da tekst prikaže trenutni rezultat, a zarad prikazivanja svih osnovnih elemenata Jedinstva, mi ćemo htjeti maštoviti efekt čestica kada udarite loptu. Cijelu će igru ​​trebati dramatično osvijetliti.

To se raspada na a objekt s loptom (sfera), a mrijesnih, dva podupirača s veslom emiteri čestica u prilogu, a Cjelovitost 3D teksta, i a spot svjetlo. Za ovaj ćemo udžbenik koristiti zadani fizički materijal odskakivati, s kombinirati odskočiti postavljen pomnožiti. Evo kako izgleda postavljanje, na deset snimaka zaslona:

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 4
Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 5

Prvo napravite kocka prop za veslo.

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 6

Prikladno ga skalirajte, duplicirati, i stavio sfera između vesla za loptu.

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 7

Zatim stvorite Objekt 3DText i ljestvica i položaj točno, mijenjajući veličina fonta atribut da biste dobili manje pikseliranu sliku.

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 8

Zatim stvorite dva sustavi čestica, odaberite željene karakteristike i pričvrstite ih na vesla.

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 9
Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 10

Zatim ćete to htjeti postavite i zakrenite kameru tako da pravilno kadrira scenu. Dok je odabrana kamera, u donjem desnom kutu možete vidjeti mali pregled prikaza kamere.

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 11

Prije nego što završimo, moramo stvoriti dvije dodatne kocke koje će biti odbojnici, kako lopta ne bi odskakala iz područja igre. Možete ih učiniti nevidljivim ako poništimo odabir opcije mrežasti render u kartica inspektora.

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 13
Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 14

Ako pogodite igru, sada možete vidjeti osnovne elemente naše igre. Još ništa neće učiniti, ali doći ćemo do toga!

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 12

Sada kada smo postavili to postavljanje, razgovarat ćemo o tome što je sve u stvaranju tih elemenata za igru.

6. Skripta u jedinstvu

Nakon što na objekt vežete skriptu, možete je pregledati dvostrukim klikom na nju u inspektor. Ovo se otvara MonoDevelop, zadano razvojno okruženje za Unity. U osnovi, Monodevelop je uređivač teksta sa značajkama posebno optimiziranim za programiranje.

Ključne riječi i komentari istaknuti su u plava i zelena, a numeričke vrijednosti i nizovi pojavljuju se u Crvena. Ako ste koristili Zasjeniti ili drugih IDE-ova, MonoDevelop je vrlo sličan. Možeš izgraditi svoje skripte iz uređivača kako biste provjerili ima li u sintaksičkim pogreškama:

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 15

Općenito, kako bi vaš skripta komunicirala s Unity-om, morat ćete referencirati elemente koje posjeduje objekt koji drži skriptu (popis tih elemenata možete vidjeti u odjeljku inspektor kad odaberete odgovarajući objekt). Tada možete pozvati metode ili postaviti varijable za svaki od ovih elemenata kako biste izvršili željene promjene.

Ako želite da skripta na objektu utječe na svojstva drugog objekta, možete stvoriti prazan GameObject varijablu u vašoj skripti i koristite inspektor dodijeliti ga drugom objektu u sceni.

Popis elemenata koje predmet može imati je sljedeći (preuzet iz inspekcijskog pregleda jednog našeg vesla u gornjem primjeru):

  1. Transformirati
  2. Kocka (mrežasti filter)
  3. Box Boxer
  4. Mesh Renderer

Na svaki od ovih aspekata objekta može se utjecati unutar skripte. Zatim ćemo pogledati kako točno.

6.1 Preobraziti

Funkcije transformacije za GameObject u Jedinstvu kontroliraju fizičke parametre tog objekta: njegov ljestvica, svoje položaj, I je orijentacija. Možete im pristupiti iz skripte poput ove:

transform.position = newPositionVector3; transform.rotation = newRotationQuaternion; transform.localScale = newScaleVector3;

U gornjim primjerima imenovane varijable su vrste navedene u imenima. Ovdje je nekoliko ključnih detalja: položaj i razmjera se, kao što biste i očekivali, pohranjuju u obliku Vector3s. Možete pristupiti x, Y, i Z njihove komponente (na primjer, transform.position.y daje vam udaljenost objekta iznad nulte ravnine).

Međutim, kako bi se izbjeglo gipka brava, rotacije se obrađuju kao quaternions (četverokomponentni vektori). Budući da ručno manipuliranje kvarterionima nije intuitivno, možete manipulirati rotacijama pomoću Eulerijskih uglova pomoću gumba Kvaternion. Euler metoda poput:

transformacija.rotacija = kvarterion. Euler (nagib, zijevanje, kotrljanje);

Ako želite glatko premještati predmete s jednog mjesta na drugo, pronaći ćete ih Slerp metoda za quaternions i vector3s korisna. Slerp uzima tri argumenta - trenutno stanje, krajnje stanje i brzinu promjene, te glatko interpolira između njih zadanom brzinom. Sintaksa izgleda ovako:

transform.position = Vector3.Slerp (startPositionVector3, newDestinationVector3, 1);

6.2 Render

Funkcije prikazivanja u Unityu omogućuju vam kontrolu načina prikazivanja površina rekvizita na ekranu. Možete ponovo dodijeliti teksturu, promijeniti boju i promijeniti sjenilo i vidljivost objekta. Sintaksa izgleda ovako:

renderer.enabled = lažno; renderer.material.color = nova boja (0, 255, 0); renderer.material.mainTexture = myTexture; renderer.material.shader = newShader;

Većina njih ima prilično jasne funkcije. Prvi primjer čini predmetni objekt nevidljivim: koristan trik u nizu situacija. Drugi primjer dodjeljuje novo RGB boja (naime, zelena) dotičnog objekta. Treći dodjeljuje glavnoj difuznoj teksturi novoj varijabli Texture. Posljednji primjer mijenja shader materijala predmeta u novo definiranu varijablu shader-a.

6.3 Fizika

Jedinstvo dolazi s integriranim motorom za fiziku - nešto od toga igre fizike na pijesku Razbiti, voziti i graditi: 3 izvrsna fizička simulatora sandžaka Čitaj više sve koristiti. To vam omogućuje da dodijelite fizička svojstva objekata i dopustite da se pojedini detalji njihove simulacije obrađuju umjesto vas. Općenito, umjesto da pokušavate primijeniti vlastitu fiziku pomoću udžbenika i sustava transformacije, jednostavnije je i robusnije u najvećoj mogućoj mjeri koristiti jedinicu fizike Unitya.

Svi fizički rekviziti zahtijevaju colliders. Međutim, samu simulaciju vodi a kruto tijelo, koji se mogu dodati u inspektor pogled. Kruta tijela mogu biti kinematski ili nonkinematic.

Kinematski rekviziti za fiziku sudaraju se s (i efektom) nekinematskim rekvizitima oko fizike oko njih, ali na njih ne utječe sam sudar. Statični kinematički rekviziti su poslovični nepokretni objekti, a pokretni kinematski objekti su poslovična nezaustavljiva sila (za zapis, kada se sudaraju, jednostavno prolaze kroz svaku drugo).

Povrh toga možete prilagoditi kutni povlačenje predmeta (koliko energije treba da se zavrti), promijeniti njegovu masu, odrediti je li na njega utjecala gravitacija ili ne i primijeniti na nju sile.

Primjeri:

kruto tijelo.angularDrag = 0,1f; kruto tijelo.mass = 100; rigidbody.isKinematic = lažno; rigidbody.useGravity = istina; kruto tijelo. AddForce (transform.naprijed * 100);

Sve su to prilično samorazumljive. Jedino što ovdje treba napomenuti je uporaba transform.forward. Vector3 sve imaju tri komponente (.naprijed, .up, i .pravo) povezanima s njima, kojima se može pristupiti i rotira se s njima (naprijed je smjer plave strelice u uređivaču). transform.forward ključna riječ je jednostavno prednji vektor za trenutni objekt s magnitudom 1. Može se množiti plovkom kako bi se stvorila veća sila na objekt. Možete se također uputiti transform.up i transform.righti negirajte ih da dobiju obrnute vrijednosti.

6.4 Sudar

Prilikom izrade igre volite da sudar rezultira nekom promjenom stanja u vašem kodu, a ne samo fizičkom simulacijom. Za to će vam trebati metoda otkrivanja sudara.

Postoji potrebna količina pripremnog rada za otkrivanje sudara u Jedinstvu. Prvo, najmanje jedan objekt u sudaru treba imati nekinematski kruti dio vezan uz njega. Oba objekta moraju imati ispravne sudarače, postavljene na non-okidače. Ukupna brzina oba objekta mora biti dovoljno niska da se zapravo sudaraju, umjesto da se jednostavno preskaču jedni preko drugih.

Ako ste se za sve pobrinuli, možete provjeriti da li se sudar stavite u skriptu priloženu posebnu metodu otkrivanja sudara uz objekt koji želite provjeriti sudar. Metoda će izgledati ovako:

void OnCollisionEnter (Collision other) {// napravite stvari ovdje. }

Ova će se metoda automatski pokrenuti tijekom prvog okvira kad drugi objekt dotakne vaš objekt. Entitet sudara drugo je referenca na objekt koji ste pogodili. Možete, na primjer, uputiti na nju gameobject, kruto tijelo, i transformirati karakteristike da se njime manipulira na različite načine. Dok OnCollisionEnter vjerojatno je najčešća funkcija koju koristite, a možete je koristiti OnCollisionExit i OnCollisionStay (s inače identičnom sintaksom i upotrebom), koji se aktiviraju tijekom prvog okvira kad se zaustavite sudarajući s predmetom i tijekom svakog kadra koji se sudara s objektom.

Ponekad također može biti korisno raditi ono što se zove raycasting. Kod emitiranja zraka beskonačno tanka linija (a zraka) je bačen kroz svijet s nekog podrijetla, uz neki vektor, a kad pogodi nešto, vraćaju se položaj i drugi detalji prvog sudara. Kôd za Raycast izgleda ovako:

RaycastHit hit; ako (Fizika. Raycast (transform.position, -Vector3.up, out hit)) {float distanceToGround = hit.distance; }

To baca zrak iz položaja trenutnog objekta duž -Vector3.up (ravno dolje), i povezuje varijablu pogoditi na prvi objekt s kojim se sudara. Jednom kada je vaša zraka pogodila nešto, možete pristupiti hit.distance odrediti koliko je daleko, ili pogoditi. GameObject za manipuliranje objektom koji ste pogodili.

Ovakve snimke se mogu koristiti za strijelce kako bi se utvrdilo na što je pištolj uperen, ili za odabir predmeta kada ih kamera gleda ili za određene stilove mehanike pokreta.

6.5 Korekcija vremena

Jedan važan faktor koji treba imati na umu kada na taj način manipulirate predmetima okvirna stopa. Bez obzira koliko pažljivo optimizirali, okviri će uvijek varirati i ne želite da se brzina igre u skladu s tim razlikuje. Ako netko drugi vodi vašu igru ​​na bržem računalu nego što ste je razvili, ne želite da se igra pokreće dvostrukom brzinom.

Način na koji to ispravite jest množenjem vrijednosti koje upotrebljavate u vremenu potrebno za iscrtavanje posljednjeg okvira. To se vrši pomoću Time.deltaTime. To učinkovito mijenja brzinu sve varijable iz koje povećavate svaki kadar promjena po okviru do promjena u sekundi, i vjerojatno biste trebali izvršiti ovu promjenu u bilo kojoj vrijednosti koju povećavate ili smanjujete svaki okvir.

6.6 Izvori zvuka i slušatelji

Sada kada smo objavili kako stvarati, prikazivati ​​i upravljati objektima, razgovarajmo o onom drugom smislu koji računalne igre mogu poslužiti: naime, zvuk. Jedinstvo podržava dvije vrste zvuka: 2D i 3D zvukovi. 3D zvukovi mijenjaju glasnoću prema udaljenosti i izobličuju se kako se kreću u odnosu na fotoaparat; 2D zvukovi ne.

2D zvukovi su prikladni za glasovne prijenose i pozadinsku glazbu, a 3D zvukovi primjenjuju se na zvukove generirane događajima u svijetu. Da biste promijenili da li je zvuk 3D ili ne, odaberite ga u projekt pogled, prebacite se na inspektor pogledajte i odaberite odgovarajuću opciju iz padajućeg izbornika, a zatim pritisnite Ponovno unesi dugme.

Da biste stvarno mogli reproducirati zvuk, morat ćete priložiti prilog audiosource na opremu (podrška koju želite da zvuk potječe, u slučaju 3D zvuka). Tada ćete trebati otvoriti audioclip polje i odaberite zvučnu datoteku.

Možeš koristiti myAudioSource. Pauza() i myAudioSource. Igra() za kontrolu tih zvučnih datoteka. Možete prilagoditi ponašanje ispadanja, glasnoću i doplersko prebacivanje zvukova ispod inspektor kartica za izvor zvuka.

6.7 Unos

Igra koja ne uzima korisnikov unos nije velika igra. Postoji puno različitih vrsta ulaza u koje možete čitati, a gotovo svi su dostupni putem Ulazni i keycode objekata. Neke uzorke unosa (koje imaju vrijednosti procijenjene za svaki okvir) su dolje.

Vector3 mousePos = Input.mousePosition; bool isLeftClicking = Unos. GetMouseButton (0); bool isPressingSpace = Unos. GetKey (KeyCode). Prostor);

Funkcije ovih linija uglavnom su samorazjašnjene. Pomoću ove tri vrste ulaznih referenci možete rekonstruirati kontrolne sheme većine modernih 3D računalnih igara.

6.8 Otklanjanje pogrešaka skripte

Recimo da skripta ne funkcionira. Kao što kaže dobar liječnik, mogu vam se dogoditi pipci i kaputi. Ako postoje iskrene pogreške u sintaksi s vašim C #, igra će se uglavnom odbiti pokrenuti kad igrate, a pružaju se i prilično korisne poruke o pogreškama ako izgraditi skripte iz uređivača. Pogledaj ispod:

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 16

Te bugove obično nije najteže ispraviti. Ono što može biti problematičnije jesu suptilne semantičke pogreške u koje ste uspješno napisali datoteku punu valjanog C # - samo ne onu koja radi ono što ste mislili da hoće. Ako imate jednu od ovih pogrešaka i imate problema s njezinim praćenjem, možete pokušati poboljšati situaciju.

Prvi je pauziranje izvršenja igre i provjeravanje konzole. Igru možete pauzirati klikom na ikonu pauza ikonu u gornjem srednjem dijelu uređivača, a zatim odabir konzola s dna prozor izbornika (ili pritiskom na ctrl > smjena > C). Čak i ako nema pogrešaka, upozorenja i dalje mogu pomoći da se daju tragovi što može poći po zlu.

Ako to ne uspije, možete pokušati steći predodžbu o stanju vaše skripte ispisom stanja unutarnjih varijabli kako biste potvrdili da program radi ono što mislite da radi. Možeš koristiti Debug. Zapisnik (niz) za ispis sadržaja niza na konzolu kad izvršenje programa pogodi taj redak. Općenito, ako radite unatrag od onoga što mislite da bi se trebalo odvijati kroz stvari koje bi trebale biti čineći to, na kraju ćete stići do točke u kojoj otisci pogrešaka ne rade ono što očekujete čini. Tu je vaša greška.

7. Primjer: skripta pong

Da bismo izgradili Pong, raščlanimo igru ​​na njegove temeljne elemente: potrebna nam je lopta koja sve više napreduje između vesla i povećava se brzina, potrebna nam je tabla koja zna kada su kugle prošle vesla i potreban nam je mehanizam za ponovno pokretanje lopte kada je to događa se. Dobar prvi korak bi bio dodavanje nekinematskog krutog tijela lopti, dva kinematička kruta tijela vesla, onesposobiti gravitaciju za sve njih i dodijeliti odgovarajući fizički materijal iz standardnih sredstava (odskakivati s kombinirati odskočiti postavljen pomnožiti).

Ispod možete pogledati skriptu za kuglu s objašnjenjima. Lopta mora ispuniti neke osnovne ciljeve: treba odskočiti u kompliciranom obrascu, uvijek održavajući kretanja na obje osi, a trebao bi ubrzati izazovnim, ali ne i nemogućim tempom u vodoravnom položaju smjer.

BallHandler.cs

Zatim treba skriptirati naše veslo, koje možete pogledati u nastavku. Veslo se mora pomicati gore-dolje kao odgovor na pritiske tipki (ali ne izvan određenih granica). Također treba pokrenuti sustav čestica kad se sudara s nečim.

PaddleHandler.cs

Zatim nam treba neprijateljsko AI: nešto zbog čega će neprijateljevo veslo pratiti fiksnu brzinu prema lopti. Za to ćemo koristiti Vector3.Slerp za maksimalnu jednostavnost. Također bismo željeli isto ponašanje čestica koje vidimo na vlastitom veslu.

EnemyAI.cs

Konačno, potrebna nam je skripta za ažuriranje tablice i resetiranje lopte kad izađe izvan granica.

ScoreboardUpdater.cs

Sa priloženim skriptama i popunjenim referencama, kada pokrećemo našu igru ​​Pong, doživljavamo gameplay!

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 18

Možeš preuzmi moj Pong demo, ako želite vidjeti sve što sam opisao u akciji. Radi se na Windows, Mac i Linux sustavima.

8. Istraživanje dokumentacije / učenje više

Unity je složen motor s mnogo više značajki nego što bi to moglo biti obuhvaćeno vodičem ovog stila, i to je prije nego što uključite široku paletu (besplatnih i komercijalnih) proširenja Unityja dostupnih na Internet. Ovaj će vam vodič pružiti snažno polazište za razvoj igre, ali samoobrazovanje je važna vještina u svim nastojanjima, i dvostruko više ovdje.

Ključni izvor ovdje je Jedinstvo ScriptReference. ScriptReference je baza podataka koja se može pretraživati ​​i dostupna je za C # i Javascript koja ima popis svake naredbe i značajke Unityja, s opisima njihovih funkcija i kratkim primjerima sintaksa.

Ako imate problema s uređivačem i sučeljem Unitya ili jednostavno kao video postavke vodene vodiče, postoji dugačak popis visokokvalitetnih Video tutorijali jedinstva Najbolji tutorijali za jedinstvo 3D za početnikeŽelite razviti igre s Unity-om, ali ne znate gdje započeti? Isprobajte jedan od ovih fantastičnih tutorijala Unity 3D danas. Čitaj više dostupno. Opsežnije (ali manje široko) udžbenik teksta za Jedinstvo dostupni su i iz CatLikeCoding.

Konačno, ako imate pitanja koja nisu u dosegu dokumentacije ili vodiča, konkretna pitanja možete postaviti na odgovora. Unity3d.com. Imajte na umu da odgovore daju volonteri, pa poštujte njihovo vrijeme i prvo pretražite bazu podataka da biste bili sigurni da na vaše pitanje još niste dobili odgovor.

9. Izrada igre / sastavljanja na samostalnoj aplikaciji

Kad ste izradili nešto na što ste ponosni (ili ste završili s kloniranjem našeg pomalo sumnjivog primjera Pong-a za praksu), vrijeme je da premjestite igru ​​iz uređivača i pretvorite je u nešto što možete objaviti na internetu i natjerati prijatelje i obitelj na igra. Da biste to učinili, morat ćete izgraditi samostalni program. Dobra vijest je da je u Jedinstvu to vrlo, vrlo jednostavno. Međutim, postoji nekoliko potencijalnih štucanja na koje biste trebali biti oprezni.

Za početak, znajte da možete graditi samo projekat bez pogreške. U tom smislu, prilikom izrade budite sigurni da je konzola otvorena: postoje neki uvjeti pogreške koje će igra zanemariti u uređivaču, ali će i dalje prekinuti pokušaj izrade. To samo pušta poruke o pogrešci na konzolu, bez vidljivih rezultata na zaslonu, što može biti frustrirajuće ako zaboravite provjeriti. Nakon što dobijete igru ​​sastavljanja bez pogreške, možete odabrati Postavke gradnje ispod Datoteka izbornika ili pritisnite ctrl > smjena
> B. Tako će se prikazati jednostavan dijalog koji vam omogućuje izgradnju igre za nekoliko platformi.

Programiranje igre s jedinstvom: Vodič za početnike Jedinstvena programska igra 17

Proces od tamo je sam po sebi razumljiv: odaberite svoje mogućnosti i pritisnite izgraditi; igra će vas pitati za mapu u koju ćete instalirati i smjestiti izvršavajući i podatkovni direktorij tamo. Ove dvije datoteke mogu se komprimirati i distribuirati (samo pripazite da ne naplaćujete igru ​​izgrađenu u Unity demo demo-u, jer se time krše uvjeti usluge).

10. Završne napomene

Kao i kod svakog alata za razvoj igara, ključ uspjeha s Jedinstvom je iterativni razvoj. Morate graditi u upravljivim koracima - budite ambiciozni, u svakom slučaju, ali budite ambiciozni u malim komadima i dogovorite se ti komadići takvi da ćete, čak i ako odustanete od svoje krajnje ambicije, barem navratiti s koherentnom proizvod.

Prvo nabavite najvažnije elemente: imajte na umu svoje minimalni održivi proizvod, najjednostavnija i najgora kost koju ste mogli stvoriti i još uvijek imate osjećaj kao da ste postigli nešto vrijedno. Dođite do tog minimalno održivog projekta prije nego što krenete u veće ambicije.

Ovaj udžbenik vam daje čvrsto početno mjesto, ali najbolji način za učenje Jedinstva je izgradnja igre. Započnite graditi igru, popunite praznine u svom znanju kako nastaju, a postupni protok znanja brzo će izbrisati ono što ne znate iznenađujuće brzo.

Ako ste pročitali sve ovo i pomalo ste preplavljeni kodiranjem potrebnim za Unity, provjerite kako to naučite razvoj igara pomoću Unity Learn Jedinstvo je učenje najlakši način za svladavanje razvoja igaraŽelite započeti razvijati vlastite igre? Jedinstvo učenje je najbolji i najlakši način da naučite i savladate ono što trebate znati. Čitaj više i također pročitajte naš vodič o kako napraviti video igre bez ikakvog programiranja Kako napraviti video igre bez ikakvog programiranjaŽelite napraviti videoigru, ali je ne možete kodirati? Zatim upotrijebite komplet za izgradnju video igara koji vam omogućuje izradu igara bez ikakvog potrebe za kodiranjem! Čitaj više .

Jedinstvo je moćan alat i uz malo istraživanja možete na njemu graditi impresivne projekte brže nego što biste mogli očekivati. Javite nam što ste ugradili u komentarima u nastavku - voljeli bismo vidjeti!

Pisac i novinar sa sjeverozapada, Andre je zajamčeno da će ostati funkcionalan do 50 Celzijevih stupnjeva, a vodootporan je do dubine od dvanaest metara.