Oglas

Presenetljiva značilnost internetne ekonomije je porast indie videoigre. Ko je bila ekskluzivna domena več-milijonov dolarjev tri-A studiev človeka, so razvili številne nabor orodij, ki prinašajo sodobne vire za razvoj iger v roke posameznikov ali majhnih, ad-hoc zbirk programerjev in oblikovalcev. Prej smo razpravljali o najboljše indie igre 10 Indie iger je tako dobro, da boste pozabili, da so sploh indieLahko pa pridejo časi, ko želite nekaj drugačnega od indie norme. Igra, ki sledi indie vrednostim, pa je narejena s kakovostjo, po kateri so znane vrhunske igre AAA. Naslovi kot ... Preberi več , zato se prepričajte, da jih preverite, če imate nekaj navdiha, kaj lahko dosežete z orodji, kot je Unity.

Ta vodnik je na voljo za prenos kot brezplačen PDF. Prenesite Programiranje igre z enotnostjo: Vodnik za začetnike zdaj. Če želite kopirati in deliti to s svojimi prijatelji in družino, vas prosimo, da to kopirate in delite.

Te indie ekipe za razvoj iger so pokazale okretnost in strpnost do tveganj, ki jim v mnogih primerih omogočajo, da inovacije v igranju pospešijo hitreje kot njihovi veliki proračunski kolegi. V zadnjih letih so se premierno predstavili številni šokantno uspešni indie naslovi, med drugim tudi

instagram viewer
Minecraft, Limbo, in Super mesni fant, in tudi če vam ni treba veščine, kako narediti takšne igre, lahko naredite igro z uporabo Buildboxa Kako narediti video igro v enem tednu s pomočjo BuildboxaObstaja program, s katerim je razvoj iger neverjetno enostaven tudi za tiste, ki nimajo popolnoma nobenih izkušenj z oblikovanjem video iger. Imenuje se Buildbox. Tukaj je, zakaj bi ga morali poskusiti. Preberi več .

V hitro razvijajoči se pokrajini razvoja indie iger, Enotnost je nastal kot nekaj dejanskega standarda: nizki stroški, enostavna uporaba in širok nabor funkcij so idealni za hiter razvoj iger. Enotnost je tako prilagodljiva, da lahko celo ustvarite svoje igralne krmilnike po meri Kako narediti igralni krmilnik po meri z Arduino in UnitySte si kdaj želeli zasnovati svoj krmilnik za igre? Lažje je, kot si mislite! Preberi več z malo DIY vem kako!

Celo veliki studii, kot je CCP (Developers of Eve na spletu) ga uporabite za hitro prototipiranje konceptov igre. Unity ponuja "igralec v škatli" - fizikalni in upodabljajoči motor s kavlji za več skriptnih jezikov, prilagodljiv tako rekoč vsem žanrom videoigre.

Medtem ko Unity zagotavlja vizualni urejevalnik za manipulacijo z igro, Unity ni orodje za ustvarjanje iger "nič programiranja". Zahtevate, da programirate za ustvarjanje rezultatov, hkrati pa vam nudi veliko bolj prilagodljivo in zmogljivo orodje, kot bi ga lahko izvajal kateri koli program za izdelavo iger.

Unity ne bo opravil namesto vas, vendar bistveno zniža oviro za vstop. Z uporabo C ++ in OpenGL lahko začnete povsem iz nič, kar lahko traja nekaj dni, da pridete do trenutka, ko je na zaslonu dejansko nekaj prikazanega. S pomočjo Unityja traja približno deset sekund. Edinost daje osnovne elemente ustvarjanja iger v roke začetnikom programerjem na hiter, intuitiven način.

Danes vas bom vodil skozi vse, kar morate vedeti, da boste lahko naredili igro v Unityju, ki je razčlenjena na deset glavnih poglavij:

§1 - Različice enotnosti

§2 – Namestitev enotnosti

§3 - Kratek uvod v objektno usmerjeno paradigmo

§4 - Osnove enotnosti

§5 – Primer: Osnovni elementi igre

§6 - Pisanje v enotnosti

§7 – Primer: Scenarij pong

§8 - Raziskovanje dokumentacije / učenje več

§9 - Izdelava igre / prevajanje v samostojno aplikacijo

§10-Zaključni zapiski

1. Različice enotnosti

Unity ima dva osnovna okusa: pro različico in brezplačno različico. Obstajajo a število razlik, na splošno pa pro različica podpira številne vizualne izboljšave (kot so mehke sence v realnem času in naknadno obdelavo) in veliko sorazmerno manjših funkcij, ki so izredno koristne za bolj zapletene igre.

Kljub temu je za večino relativno preprostih iger, ki jih morda želite sestaviti, brezplačna različica Unityja povsem primerna. Spodaj bomo podrobneje razdelili ključne razlike za tiste, ki jih zanima.

1.1 Cene

Brezplačna različica Unity je seveda brezplačna. Vendar pa obstaja nekaj omejitev: brezplačne različice Unity ni mogoče licencirati nobenemu podjetju z letnim dohodkom večjim od $100,000. Čeprav takšne organizacije presegajo obseg tega vodnika, če sumite, da bi lahko postali taka organizacija, je verjetno pametno, da se pomladite za različico Pro.

Pro različica Unity je $75 mesečno oz $1500 za stalno licenco in nima omejitev, kaj lahko počnete z igrami, ustvarjenimi z njo. Na voljo je tudi 30-dnevna brezplačna preskusna različica, ki jo bomo uporabili v tem priročniku, da bi dobili čim boljši pregled razpoložljivih funkcij. Na voljo je tudi enoletna študentska licenca Studica za $129.

1.2 Funkcije

V brezplačni različici Unity ni več funkcij. Vendar so najpomembnejše razlike: v brezplačni različici Unity manjka več možnosti upodabljanja, ki to omogočajo boljše videz, hitreje delujoče igre (podpora LOD, naknadna obdelava prostora na zaslonu, napredni senčniki, mehke sence v realnem času in odloženi upodabljanje). Manjka tudi polna mehaim animacijski sistemin nekaj AI orodij.

Na splošno je za kompleksne obsežne projekte ali projekte, pri katerih je grafična zmogljivost pomembna, različica pro vredna. Uporabljam različico pro, ker razvijam igre navidezne resničnosti za Oculus Rift Oculus Rift PregledNavidezna resničnost ni nova, a je končno cenovno dostopna in v našem razumevanju. Po štirih letih in dveh razvojnih prototipih je prišla končna potrošniška izdaja Oculus Rift. Preberi več , za pravilno interakcijo s slušalkami pa je potrebna podpora za obdelavo na zaslonu za pravilno obdelavo.

2. Namestitev enotnosti

Enotnost je enostavna za namestitev. Izvršilno datoteko lahko prenesete iz unit3d.com/get-unity/download.

Ko ga naložite, ga zaženite in sledite navodilom za namestitev. Ko je namestitev končana, se prikaže okno z naslovom »aktiviraj licenco Unity«. Potrdite polje »Aktiviraj brezplačno 30-dnevno preskusno različico Unity Pro« in nato »V redu«.

Čestitamo! Zdaj imate 30-dnevno preizkušnjo Unity Pro. Ko se preskusna različica izteče, če ne želite kupiti različice pro, lahko preklopite na brezplačno različico in obdržite obstoječo vsebino.

3. Kratek uvod v objektno usmerjeno paradigmo

Preden začnemo z Unityjem, je pomembno, da se malo lotimo osnov. Enotnost podpira oboje C # in JavaScript za programiranje iger 7 jezikov za razvoj igre enotnosti, ki se jih je treba naučiti: kaj je najboljše?Želite začeti razvoj iger v Unityju? Potrebovali boste poznavanje enega od teh jezikov, združljivih z Unityjem. Preberi več ; bomo za to vadnico sodelovali s C #.

Najprej, če še nikoli niste programirali, odložite to vadbo in nekaj dni preživite v Microsoftovem programu C # Language Primer dokler se ne boste počutili udobno z uporabo jezika za preproste naloge.

Če želite nekaj drugačnega kot C # (ni pa nujno jezik, ki ga lahko uporabljate v Unityju), si oglejte naš vodič po šest najlažjih programskih jezikov za začetnike 6 najlažjih jezikov za programiranje za začetnikeNaučiti se programirati je iskanje pravega jezika prav toliko, kolikor gre za postopek edifikacije. Tu je prvih šest najlažjih programskih jezikov za začetnike. Preberi več .

Če ste že programirali v nujnem ali objektno usmerjenem jeziku, kot sta C ali Java, prelistajte temeljni premaz in se seznanite s tem, kako se C # razlikuje od drugih jezikov, ki ste jih uporabljali v preteklosti. Kakor koli že, ne nadaljujte z vadnico, dokler se ne boste počutili udobno pri reševanju preprostih težav s C # (na primer, če bi vprašala Če želite napisati program, ki natisne prvih sto glavnih številk, bi morali biti sposobni napisati program brez posvetovanja Google).

Najpomembnejši koncept, ki ga moramo tukaj razumeti, je objektno usmerjena paradigma Od kod je "objektno orientirano" programiranje dobilo svoje ime?Objektno orientirano ni le naključna buzzword, ki jo slišite v programskih krogih. Za imenom je razlog - a kaj? Pridružite se mi, ko raziskujem nekatere osnove programskih konceptov in razložim ... Preberi več (skrajšano kot OOP). V objektno usmerjenih jezikih so programi razdeljeni na funkcionalne enote, imenovane Predmeti. Vsak predmet ima svoje zasebne spremenljivke in funkcije. Pokliče se funkcije, povezane s posameznimi predmeti metod.

Ideja je modularnost: izoliranje vsakega predmeta in prisiljanje drugih predmetov k interakciji z njim s svojimi metodami lahko zmanjšate število možnih nenamernih interakcij - in s podaljšanjem, hrošči. Prav tako lahko ustvarite predmete, ki jih lahko pozneje ponovno uporabite brez sprememb. V Unityju boste te objekte gradili in jih pritrdili igralne entitete (čigavo vedenje bodo upravljali).

Predmeti so na voljo iz razredov: razred je le datoteka, ki določa definicijo vašega predmeta. Torej, če želite a Mook predmeta, ki v vaši igri obravnava AI za sovražnika, napišete razred »Mook« in to datoteko pripnete vsaki sovražnikovi entiteti. Ko zaženete igro, bo vsak sovražnik opremljen s kopijo predmeta 'Mook'.

Pripenjanje novega skripta na predmet izgleda takole:

Programiranje igre z enotnostjo: Vodnik za začetnike Programska igra enotnosti 1

Prvič, izberite predmet in pojdi na Inšpektor. Kliknite na Dodajte komponento gumb.

Programiranje igre z enotnostjo: Vodnik za začetnike enotna programska igra 2

Pojdi do nov scenarij, vnesite želeno ime in kliknite ustvarite in dodajte.

Programiranje igre z enotnostjo: Vodnik za začetnike Programska igra enotnosti 3

Zdaj imate nov skript, ki ga lahko uredite tako, da dvokliknete nanj!

Datoteka razreda izgleda nekako takole:

z uporabo UnityEngine; javni razred Mook: MonoBehaviour {private float health; ničen Start () {zdravje = 100; } razveljavitev Update () {if (zdravje> 0) {/ * Poiščite igralca, če na poti naletite na igralca, ga ubijte, če vas ustreli, odstranite naključno količino zdravja * /}} }

Razložimo to:

  • Uporaba UnityEngine: Ta vrstica pove C #, da želimo uporabiti knjižnice Unityja, ki nam omogočajo povezavo z igralnim mehanizmom Unity.
  • Javni razred Mook: MonoBehaviour:Ta vrstica označuje razred in njegovo ime - Mook.
  • Zdravje zasebnega plovca: Ta razglasi spremenljivko zasebnega razreda (ki jo je mogoče spremeniti samo znotraj razreda). Spremenljivki je dana vrednost v Začni.
  • Neveljaven začetek (): Ta označi imenovano metodo Začni. Start je posebna metoda, ki se izvaja samo enkrat, ko se igra sprva zažene.
  • Razveljavitev posodobitve (): Posodobitev je še ena posebna metoda, ki deluje na vseh okvirih. Tu bo šla večina vaše logike igre.
  • // če na poti naletite na igralca, ga ubijte: Ta vrstica je komentar (vsaka vrstica, ki se začne z dvojno poševnico, C # ne upošteva). Komentarji se uporabljajo, da se opomnite, kaj počnejo določeni bitovi kode. V tem primeru se ta komentar uporablja za bolj zapleten blok kode, ki dejansko deluje tako, kot opisuje komentar.

Skupaj z Začni in Nadgradnja, lahko svoje lastne metode uveljavite s skoraj katerim koli imenom. Metode, ki jih ustvarite, se ne bodo izvajale, razen če bodo poklicane. Objavimo metodo za hipotetični razred, imenovan addTwoNumbers ki skupaj sešteje dve številki:

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

Ta razglasi javno (dostopno drugim predmetom) metodo, ki vrne float, imenovano addTwoNumbers, ki kot vhod vzame dva plovca (imenovana a in b). Nato vrne vsoto obeh vrednosti kot izhod.

Kličete to metodo iz istega razreda (recimo od znotraj Nadgradnja) izgleda tako:

rezultat float = addTwoNumbers (1, 2);

Klicanje metode iz drugega razreda je podobno:

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

Ponovno to ustvari primerek našega razreda, dostopi do ustrezne metode in jo naloži številkam, ki jih želimo dodati, nato rezultat shrani v rezultat. Preprosto.

Če je vaš skript pritrjen na predmet s posebnimi lastnostmi (kot je oddajalec delcev), do katerega ni mogoče dostopati pod običajnim naborom parametrov GameObject lahko z uporabo izberete, da ga obravnavate kot drugo vrsto entitete igre the GetComponent metoda.

Skladnja za to izgleda tako:

GetComponent(). Predvajaj ();

Če vam kaj od tega ni znano, se vrnite in pojdite skozi temeljni premaz C #. Pri nadaljevanju vam bomo prihranili veliko frustracij.

4. Osnove enotnosti

V tem razdelku se bomo podali po osnovni mehaniki motorja Unity. Potek dela v Unityju poteka nekako takole:

  1. Ustvarite subjekt, ki bo služil vlogi v igri (prazno GameObjects se lahko uporablja za abstraktne logične naloge).
  2. Napišite ali poiščite datoteko razreda in jo dodajte entiteti kot skriptu (z uporabo Dodajte komponento gumb v inšpektor pogled.
  3. Teči > test > odpravljanje napak > ponovite dokler ne deluje in preide na naslednji element igre.

Edinost ponuja številne osnovne zavihke pogledov, ki jih lahko na različne načine razporedimo po uporabnikovem okusu. Velika petica je:

  1. Igra: prikaže tekaški primerek igre, s katerim lahko komunicirate in preizkusite.
  2. Scena: ponuja statično različico, ki jo je mogoče urejati svet igre.
  3. Inšpektor: omogoča spreminjanje posameznih entitet v svetu igre, tako da jih izberete v urednik zavihek.
  4. Projekt: omogoča brskanje po datotekah projekta in vlečenje modelov, materialov in drugih virov v urednik zavihek, da jih postavite v svet igre.
  5. Hierarhija: ta zavihek prikazuje vse predmete na svetu, kar vam omogoča, da s klikom in vlečenjem poiščete oddaljene predmete na prizorišču in matične entitete.

Glej spodnji diagram za lokacije vseh teh stvari:

Programiranje igre z edinostjo: Vodnik za začetnike Programska igra enotnosti 0

4.1 Enotne enote

4.1.1 mrežice

Mrežice so pot 3D geometrija je zastopan v Edinosti. Lahko uporabite vgrajeno enoto Unity primitivno predmetov (kocke, krogle, jeklenke itd.) ali uvozite svoje lastne 3D modele iz paketa za modeliranje, kot je Mešalnik Uvod v Blender: 7 fantastičnih vadnic za novorojenčke3D modeliranje je odličen način za uresničevanje kreativnosti, hkrati pa ste v stiku s svojo tehnično platjo. Tu je nekaj osupljivih brezplačnih vaj. Preberi več ali Maja Učenje Maje 2016: Kje začetiMaja je orodje, ki se uporablja za 3D-animacijo, a prihaja z neverjetno strmo krivuljo učenja. Kakšno dobro učno gradivo obstaja? Preberi več . Unity podpira različne oblike 3D, tudi .fbx, in .3ds.

Osnovna orodja za ravnanje z mrežnimi očesi so gumbi za spreminjanje, vrtenje in prevajanje v zgornjem levem kotu vmesnika. Ti gumbi dodajo nadzorne ikone modelom v pogledu urejevalnika, ki jih lahko nato uporabite za upravljanje v prostoru. Če želite spremeniti lastnosti teksture ali fizike predmeta, jih izberite in uporabite inšpektor pogled na analizo material in togo elementi.

4.1.2 Elementi GUI-ja

Tradicionalni vmesniki in besedila GUI se lahko prikažejo s pomočjo Besedilo GUI-ja in Tekstura GUI GameObjects v urejevalniku. Vendar pa je bolj trden in realen način za upravljanje elementov uporabniškega vmesnika uporaba 3D besedilo in Quad GameObjects (s prozornimi teksturami in neosvetljenim prozornim senčilom), ki HUD elemente postavljajo v svet igre kot entitete.

V hierarhija Poglejte, da lahko te elemente igranja povlečete na glavno kamero, da postanejo otroci, kar zagotavlja, da se premikajo in vrtijo s kamero.

Elementi GUI (besedilo in teksture) lahko prilagodijo svojo velikost in obseg z uporabo ustreznih polj na zavihku inšpektorja.

4.1.3 Materiali

Materiali so kombinacije tekstur in senčniki Pojasnjeno pet pomembnih pogojev za igranje računalnikovČe igrate igro na konzoli, so tehnične podrobnosti urejene za vas. Nekateri igralci imajo to raje, vendar igralci računalnikov pogosto uživajo večji nadzor nad očesom igre ... Preberi več , in jih lahko povlečete neposredno na predmete igre na zavihku projekta. Veliko število senčil je na voljo z Unity Pro in lahko prilagodite teksturo, ki je na njih pritrjena, na kartici inšpektor za predmet, na katerega so uporabljeni.

Če želite uvoziti teksturo, jo pretvorite v .jpg, .pngali .bmpin ga povlecite v premoženje mapo v imeniku projektov Unity (ki se pojavi v Moje dokumente privzeto). Po nekaj sekundah se bo v urejevalniku prikazala vrstica za nalaganje. Ko se konča, boste sliko našli kot teksturo pod projekt zavihek.

4.1.5 Luči

Luči so GameObjects ki projicirajo na svet. Če na prizorišču ni luči, so vsi poligoni narisani na isti ravni svetlosti, kar daje svetu raven, izpraznjen videz.

Luči so lahko nameščene, zasukane in imajo več notranjih značilnosti, ki jih lahko prilagodite. The intenzivnost drsnik nadzoruje svetlost svetlobe in domet nadzoruje, kako hitro zbledi.

Smernice v prizorski pogled prikazujejo največji obseg osvetlitve. Igrajte se z obema nastavitvama, da dosežete želeni učinek. Prav tako lahko prilagodite barvo svetlobe, vzorec (piškotek prikaže se na površini svetloba, na katero je poudarjena svetloba, in kakšen pramen se pojavi na zaslonu, če pogledamo svetlobo neposredno. Piškotek lahko uporabite za ponarejanje bolj realističnih svetlobnih vzorcev, ustvarjanje dramatičnih lažnih senc in simuliranje projektorjev.

Tri glavne vrste svetlobe so spot, točka, in usmerjena.

Spot luči naj bodo v prostoru 3D in projicirajte svetlobo samo v eno smer v stožcu s spremenljivim kotom. Ti so dobri za svetilke, žaromete in na splošno omogočajo natančnejši nadzor osvetlitve. Spot luči lahko mečejo sence.

Točkovne luči imajo lokacijo v prostoru 3D in oddajajo svetlobo enakomerno v vse smeri. Točne luči ne mečejo senc.

Usmerjevalne lučiNazadnje se uporabljajo za simuliranje sončne svetlobe: svetlobo projicirajo v smeri, kot da bi bilo od neskončno daleč. Usmerjene luči vplivajo na vsak predmet v prizorišču in lahko ustvarijo sence.

4.1.6 Sistemi delcev

A Sistem delcev je GameObject ki hkrati ustvarja in nadzoruje sto ali tisoč delcev. Delci so majhni, optimizirani 2D predmeti, prikazani v 3D prostoru. Sistemi delcev uporabljajo poenostavljeno upodabljanje in fiziko, vendar lahko v realnem času prikažejo na tisoče entitet brez mucanja, zaradi česar so idealni za dim, ogenj, dež, iskre, čarobne učinke in drugo.

Obstaja veliko parametrov, ki jih lahko prilagodite, da dosežete te učinke, do njih pa lahko dostopate tako, da držite sistem delcev pod urejevalnik komponent > izbira sistema delcev > odpiranje zavihka inšpektorja. Lahko spremenite velikost, hitrost, smer, vrtenje, barvo in teksturo vsakega delca ter nastavite večino teh parametrov, da se spreminjajo tudi skozi čas.

Pod trk atribut, če ga omogočite in nastavite prostor za simulacijo na svet dobili boste delce, ki bodo trčili predmete na svetu, ki jih je mogoče uporabiti za številne realne učinke delcev, vključno z dežjem, premikajočo se vodo in iskricami.

5. Primer: Osnovni elementi igre

Za to vadnico bomo naredili preprosto igro Pong - nekaj, kar smo že večkrat zajeli v naredi sam:

  • Arduino klasični pong Kako obnoviti klasično igro pong z uporabo ArduinoPong je bila prva video igra, ki je dosegla množični trg. Prvič v zgodovini je bil koncept "video igre" v družinski dom vnesen po zaslugi Atari 2600 -... Preberi več
  • Arduino OLED Pong Retro igra Arduino z OLED zaslonomSte se kdaj vprašali, koliko dela je potrebno, da napišete svoje lastne retro igre? Kako enostavno je Pong kodirati za Arduino? Preberi več

V tem razdelku bomo preučili ureditev osrednjih elementov - scenarij bo prikazan kasneje.

Najprej razdelimo igro Pong na njegove osnovne sestavne dele. Najprej potrebujemo dva vesla in žogo. Žoga leti zunaj zaslona, ​​zato bomo želeli mehanizem za ponastavitev. Prav tako želimo, da se v besedilu prikaže trenutni rezultat, in da vam pokažemo vse temeljne elemente Edinosti, bomo ob udarcu z žogo želeli efekt delcev. Celotno igro bo treba dramatično osvetliti.

To razpade na a predmet z žogo (krogla), a drstilec, dva podstavka za veslo s sevalniki delcev priložen, a Subjekt 3D-besedila, in a ospredje. Za to vadnico bomo uporabili privzeti fizični material odskočiti, s kombiniraj odbojke nastavljena pomnožiti. Tukaj je opisano v desetih posnetkih zaslona:

Programiranje igre z enotnostjo: Vodnik za začetnike Programska igra enotnosti 4
Programiranje igre z edinostjo: Vodnik za začetnike Programski program enotnosti 5

Najprej ustvarite kocka podpor za veslo.

Programiranje igre z enotnostjo: Vodnik za začetnike Programska igra enotnosti 6

Ustrezno prilagodite lestvici, podvoji, in dal a krogla med vesli za žogo.

Programiranje igre z enotnostjo: Vodnik za začetnike Programska igra enotnosti 7

Nato ustvarite Predmet 3DText in lestvica in položaj pravilno, spreminjanje velikost pisave atribut, da dobite manj slikovno sliko.

Programiranje igre z enotnostjo: Vodnik za začetnike Programska igra enotnosti 8

Nato ustvarite dva sistemi delcev, izberite želene lastnosti in jih pritrdite na vesla.

Programiranje igre z enotnostjo: Vodnik za začetnike Programska igra enotnosti 9
Programiranje igre z enotnostjo: Vodnik za začetnike Programska igra enotnosti 10

Nato boste želeli postavite in zasukajte kamero tako da pravilno kadrira prizor. Medtem ko je izbrana kamera, si lahko v spodnjem desnem kotu ogledate majhen predogled pogleda kamere.

Programiranje igre z enotnostjo: Vodnik za začetnike Programska igra enotnosti 11

Preden končamo, moramo ustvariti dve dodatni kocki, ki bosta odbijači, da preprečimo, da bi žoga odskakala iz območja igre. Lahko jih naredimo nevidne, če odstranimo potrditev mrežasti upodabljalec v zavihek inšpektor.

Programiranje igre z enotnostjo: Vodnik za začetnike Programska igra enotnosti 13
Programiranje igre z enotnostjo: Vodnik za začetnike Programska igra enotnosti 14

Če ste zadeli v igro, lahko zdaj vidite osnovne elemente naše igre. Še nič ne bodo storili, toda prišli bomo do tega!

Programiranje igre z edinostjo: Vodnik za začetnike Programska igra enotnosti 12

Zdaj, ko imamo to nastavitev, bomo govorili o tem, kaj je v ustvarjanju teh elementov za igro.

6. Skript v enotnosti

Ko imate predmet pritrjen skript, ga lahko spremenite tako, da dvokliknete nanj v polju inšpektor. Odpre se MonoDevelop, privzeto razvojno okolje za Unity. V bistvu je Monodevelop urejevalnik besedil s funkcijami, ki so posebej optimizirane za programiranje.

Ključne besede in komentarji so označeni v modro in zelenain numerične vrednosti in nizi se pojavijo v rdeča. Če ste že uporabljali Eklipse ali drugih IDE-jev, MonoDevelop je zelo podoben. Ti lahko graditi vaše skripte znotraj urejevalnika, da preverite, ali obstajajo napake v sintaksi, tako:

Programiranje igre z enotnostjo: Vodnik za začetnike Programska igra enotnosti 15

Na splošno velja, da bo vaš skript omogočil interakcijo z Unityjem, morate navesti elemente, ki jih ima objekt, v katerem je skript (seznam teh elementov lahko vidite pod inšpektor ko je izbran ustrezen predmet). Nato lahko pokličete metode ali nastavite spremenljivke za vsakega od teh elementov, da uveljavite želene spremembe.

Če želite, da skript na objektu vpliva na lastnosti drugega predmeta, lahko ustvarite prazen GameObject spremenljivko v vašem skriptu in uporabite inšpektor da ga dodelite drugemu predmetu v prizoru.

Seznam elementov, ki jih lahko predmet vsebuje, je naslednji (vzeti iz inšpektorjevega pogleda enega od naših lopatic v zgornjem primeru):

  1. Preoblikovati
  2. Kocka (mrežasti filter)
  3. Box Collider
  4. Mesh Renderer

Vsak od teh vidikov predmeta lahko vpliva znotraj skripta. Nato bomo natančno videli kako.

6.1 Preoblikovanje

Funkcije pretvorbe za GameObject v Unity nadzorujejo fizikalne parametre tega predmeta: njegovo lestvica, svoje položaj, in njegove orientacija. Do njih lahko dostopate znotraj skripta, kot je ta:

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

V zgornjih primerih so imenovane spremenljivke vrst, ki so določene v imenih. Tu je nekaj ključnih podrobnosti: položaj in lestvica sta, kot bi pričakovali, shranjeni kot Vector3s. Dostopate lahko do X, Y, in Z sestavni deli vsake (npr. preoblikovanje.pozicija.y poda razdaljo predmeta nad ničelno ravnino).

Vendar se temu izogniti gimbal ključavnica, rotacije se obravnavajo kot Kvartarioni (štirikomponentni vektorji). Ker je ročno manipuliranje kvarterion neintuitivno, lahko z rotacijo z eulerskimi koti manipulirate z uporabo Kvartarion. Euler tak način:

transform.rotation = Quaternion. Euler (smola, zehanje, zvijanje);

Če želite predmete nemoteno premikati z enega mesta na drugega, boste našli to Srp metoda za kvaterione in vector3s v pomoč. Slerp prevzame tri argumente - trenutno stanje, končno stanje in hitrost sprememb ter med njimi gladko interpolira pri določeni hitrosti. Skladnja je videti tako:

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

6.2 Oddajnik

Funkcije upodabljanja v Unityju omogočajo nadzor nad načinom upodabljanja površin rekvizitov na zaslonu. Lahko ponovno dodelite teksturo, spremenite barvo in spremenite senčilo in vidnost predmeta. Skladnja je videti tako:

renderer.enabled = napačno; renderer.material.color = nova barva (0, 255, 0); renderer.material.mainTexture = myTexture; renderer.material.shader = newShader;

Večina teh ima precej jasne funkcije. Prvi primer naredi zadevni objekt neviden: uporaben trik v številnih situacijah. Drugi primer dodeli nov RGB barva (in sicer zelena) dotičnega predmeta. Tretji dodeljuje glavno razpršeno teksturo novi spremenljivki Texture. Zadnji primer spremeni senčnik materiala predmeta v novo definirano spremenljivko senzorja.

6.3 Fizika

Edinost ima integriran fizikalni motor - nekaj takega fizike peskovne igre Smash, Drive & Build: 3 odlični simulatorji fizike v peskovniku Preberi več vse uporabe. To vam omogoča, da dodelite fizične lastnosti predmetov in pustite, da se podrobnosti njihove simulacije ravnajo namesto vas. Na splošno, namesto da poskušate izvajati svojo fiziko s pomočjo učbenika in sistema preoblikovanja, je v največji možni meri enostavneje in bolj trdo uporabiti motor fizike Unityja.

Vsi rekviziti fizike zahtevajo trkalci. Vendar sama simulacija obravnava a togo, ki jih lahko dodate v inšpektor pogled. Rigidbodies so lahko kinematično ali nonkinematic.

Kinematični fizikalni rekviziti trčijo v (in učinkujejo) nekinematske fizikalne rekvizite okrog njih, vendar jih trčenje ne vpliva nanje. Statični kinematični rekviziti so pregovorni nepremični predmeti, gibljivi kinematični objekti pa so pregovorna neustavljiva sila (za zapis, ko trčijo, preprosto preidejo skozi vsako drugo).

Poleg tega lahko prilagodite kotni povlek predmeta (koliko energije potrebuje, da ga zavrti), spremenite njegovo maso, narekujete, ali na to vpliva gravitacija ali ne, in nanjo uporabite sile.

Primeri:

togo telo.angularDrag = 0,1f; togost.mass = 100; rigidbody.isKinematic = napačno; rigidbody.useGravity = res; togo. AddForce (transform.forward * 100);

Vse to so precej samoumevne. Pri tem je treba opozoriti le na uporabo preoblikovati naprej. Vse Vector3 imajo tri komponente (. naprej, .up, in .prav) z njimi povezane, do katerih lahko dostopate in se zasukate z njimi (naprej je smer modre puščice v urejevalniku). The preoblikovati naprej Ključna beseda je preprosto naprej vektor za trenutni objekt z magnitudo 1. Lahko se pomnoži s plovcem, da ustvari več sile na predmetu. Lahko se tudi sklicujete transform.up in preoblikovati.rečnoin jih zanikajte, da bi dosegli svoje odprave.

6.4 Trk

Pri gradnji igre pogosto želite, da trčenje povzroči neko spremembo stanja kode, ki ne presega zgolj fizikalne simulacije. Za to boste potrebovali metoda zaznavanja trka.

Za odkrivanje trkov v Unityju je potrebno nekaj pripravljalnega dela. Najprej vsaj eden od predmetov v trčenju potrebuje a nekinematsko togo telo pritrjena nanjo. Oba predmeta morata imeti pravilne trke, ki so nastavljeni tako, da niso sprožilci. Skupna hitrost obeh predmetov mora biti dovolj nizka, da se dejansko trčita, namesto da bi preprosto preskakovali drug drugega.

Če imate vse poskrbljeno, lahko trk preverite tako, da v skript, priložen predmetu, s katerim želite preveriti trčenje, vstavite poseben način zaznavanja trka. Metoda bo videti približno tako:

void OnCollisionEnter (Collision other) {// tu naredite stvari. }

Ta metoda se samodejno zažene med prvim okvirom, ko se drugi predmet dotakne vašega predmeta. Entiteta trka drugo je sklic na predmet, ki ste ga zadeli. Lahko ga na primer navedete gameobject, togo, in preoblikovati značilnosti, da ga manipulirajo na različne načine. Medtem OnCollisionEnter je verjetno najpogostejša funkcija, ki jo uporabljate, lahko tudi uporabite OnCollisionExit in OnCollisionStay (z drugače identično skladnjo in uporabo), ki se aktivirajo med prvim okvirom, ko nehate trkati v predmet, in med vsakim okvirom, ki ga trčite v predmet.

Včasih je lahko koristno tudi to, kar se imenuje oddajanje. Pri radiodifuziji je neskončno tanka črta (a žarek) se skozi svet vrže z nekega izvora, vzdolž nekega vektorja, in ko nekaj zadene, se položaj in druge podrobnosti prvega trka vrnejo. Koda za radijski prenos je videti tako:

Zadetek RaycastHit; če (fizika Raycast (transform.position, -Vector3.up, out hit)) {float distanceToGround = hit.distance; }

Ta vrže žarek s položaja trenutnega predmeta vzdolž -Vector3.up (naravnost navzdol) in poveže spremenljivko zadeti na prvi objekt, s katerim trči. Ko je vaš žarek nekaj udaril, lahko dostopate hit.distance ugotoviti, kako daleč je, ali zadeti. GameObject za manipuliranje predmeta, ki ga udariš.

Takšne oddaje lahko s strelci določite, na kaj je puška usmerjena, ali za izbiro predmetov, ko jih kamera gleda, ali za določene sloge mehanike gibanja.

6.5 Korekcija časa

Pomemben dejavnik, ki ga morate upoštevati, ko na tak način manipulirate s predmeti framerate. Ne glede na to, kako skrbno optimizirate, se bodo okviri vedno spreminjali in ne želite, da se hitrost igre spreminja v skladu s tem. Če nekdo drug vodi vašo igro na hitrejšem računalniku, kot ste jo razvili, ne želite, da se igra izvaja z dvojno hitrostjo.

Način, kako to popravite, je tako, da pomnožite vrednosti, ki jih uporabljate, s časom, potrebnim za upodabljanje zadnjega okvira. To se naredi z uporabo Čas.deltaTime. To dejansko spremeni hitrost katere koli spremenljivke, iz katere povečujete vsak okvir sprememba na okvir do sprememba na sekundoin verjetno bi morali to spremembo spremeniti v katero koli vrednost, ki jo povečujete ali zmanjšujete za vsak okvir.

6.6 Zvočni viri in poslušalci

Zdaj, ko smo opisali, kako ustvarjati, upodabljati in nadzorovati predmete, govorimo o drugem pomenu, ki ga lahko služijo računalniške igre: in sicer zvok. Unity podpira dve vrsti zvokov: 2D in 3D zvoki. 3D zvoki spreminjajo svojo glasnost glede na razdaljo in se izkrivljajo, ko se premikajo glede na kamero; 2D zvoki ne.

2D zvoki so primerni za glasne slike in glasbo v ozadju, 3D zvoki pa veljajo za zvoke, ki jih ustvarijo dogodki v svetu. Če želite spremeniti, ali je zvok 3D ali ne, ga izberite v polju projekt pogled, preklopite na inšpektor si oglejte in v spustnem meniju izberite ustrezno možnost, nato pritisnite ponovni uvoz gumb.

Za dejansko predvajanje zvoka morate priložiti prilogo zvočni vir do opore (podpora, za katero želite, da zvok izvira, v primeru 3D zvoka). Nato boste morali odpreti zvočni posnetek polje in izberite zvočno datoteko.

Lahko uporabiš myAudioSource. Pavza() in myAudioSource. Predvajaj () za nadzor teh zvočnih datotek. Prilagodite lahko vedenje izpadov, glasnost in doplerjevo premikanje zvokov pod inšpektor zavihek za zvočni vir.

6.7 Vnos

Igra, ki uporabnika ne sprejme nobenega prispevka, ni velika igra. Obstaja veliko različnih vrst vnosov, ki jih lahko preberete, in skoraj vsi so dostopni prek Vnos in KeyCode predmeti. Spodaj so nekateri vzorčni vhodni stavki (z vrednostmi, ki so ocenjeni za vsak okvir)

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

Funkcije teh vrstic so večinoma samoumevne. S pomočjo teh treh vrst vhodnih referenc lahko rekonstruirate kontrolne sheme večine sodobnih 3D računalniških iger.

6.8 Odpravljanje napak v skriptu

Recimo, da skript ne deluje. Kot pravi dober zdravnik, se vam lahko zgodijo bange in klopi. Če se pri C # pojavijo povsem napačne sintakse, bo igra na splošno zavrnila izvajanje, ko boste zadeli igro, na voljo pa bodo tudi nekaj dokaj uporabnih sporočil o napakah, če graditi skripte znotraj urejevalnika. Glej spodaj:

Programiranje igre z enotnostjo: Vodnik za začetnike Programska igra enotnosti 16

Te napake običajno ni najtežje odpraviti. Kar je lahko bolj problematično so subtilne semantične napake, v katere ste uspešno napisali datoteko, ki je polna veljavnega C # - samo ne tiste, ki počne tisto, kar ste mislili, da bi bilo. Če imate katero od teh napak in imate težave s sledenjem, lahko poskusite izboljšati nekaj stvari.

Prvi je, da zaustavite izvedbo igre in preverite konzolo. Igro lahko zaustavite s klikom na pavza v zgornjem srednjem delu urejevalnika in nato izberite konzola od spodaj okno meni (ali pritisnete Ctrl > Shift > C). Tudi če ni napak, lahko opozorila še vedno pomagajo dati nekaj namigov, kaj lahko gre narobe.

Če to ne deluje, lahko poskusite pridobiti tudi kakšno predstavo o stanju skripta, tako da natisnete stanje notranjih spremenljivk, da preverite, ali program počne, kar mislite, da počne. Lahko uporabiš Odpravljanje napak. Dnevnik (niz) za tiskanje vsebine niza na konzolo, ko izvedba programa zadene to vrstico. Na splošno, če delate nazaj od tistega, kar mislite, da bi se moralo dogajati skozi stvari, ki bi morale biti sčasoma boste dosegli točko, ko odtisi napak ne bodo delali tistega, kar od njih pričakujete stori. Tu je vaša napaka.

7. Primer: skriptni pong

Če želite sestaviti Pong, razdelimo igro na njene osnovne elemente: potrebujemo kroglico, ki se vedno bolj povečuje med veslami hitrost, potrebujemo preglednico, ki ve, kdaj so kroglice prenesle vesla, in potrebujemo mehanizem za ponovno zagon žoge, ko je to se zgodi. Dober prvi korak bi bil, da kroglici dodamo nekinematično togo telo, dva kinematična togega telesa pa vesla, onemogoči gravitacijo vsem in dodelite ustrezen fizični material standardnim sredstvom (odskočiti s kombiniraj odbojke nastavljena pomnožiti).

Spodaj si lahko ogledate scenarij za žogo z razlagalnimi komentarji. Žoga mora doseči nekaj osnovnih ciljev: odskočiti mora v zapletenem vzorcu, pri tem pa vedno ohraniti gibanje na obeh oseh, pospeševati pa bi moral z izzivno, a nemogoče hitrostjo v vodoravni smeri smer.

BallHandler.cs

Nato moramo začrtati svoje veslo, ki si ga lahko ogledate spodaj. Veslo se mora premikati navzgor in navzdol kot odziv na pritiske tipk (vendar ne zunaj določenih meja). Prav tako mora sprožiti sistem delcev, ko trči v nekaj.

PaddleHandler.cs

Nato potrebujemo sovražnikov AI: nekaj, zaradi česar bo sovražnikovo veslo s fiksno hitrostjo spremljalo žogo. Za to bomo za največjo preprostost uporabljali Vector3.Slerp. Všeč nam je tudi enako vedenje delcev, kot ga vidimo na svojem veslu.

EnemyAI.cs

Končno potrebujemo scenarij za posodobitev preglednice in ponastavitev žoge, ko gre zunaj meja.

ScoreboardUpdater.cs

S priloženimi scenariji in izpolnjenimi referencami, ko izvajamo igro Pong, doživljamo igranje!

Programiranje igre z enotnostjo: Vodnik za začetnike Programska igra enotnosti 18

Ti lahko prenesi moj demo Pong, če želite videti vse, kar sem narisal v akciji. Deluje v sistemih Windows, Mac in Linux.

8. Raziskovanje dokumentacije / učenje več

Unity je kompleksen motor z veliko več funkcijami, kot bi bilo mogoče zajeti v vodniku tega sloga, in to je še preden vključite široko ponudbo (brezplačnih in komercialnih) razširitev Unityja, ki so na voljo na internet. Ta priročnik vam bo zagotovil močno izhodišče za razvoj igre, vendar je samoizobraževanje pomembna spretnost v katerem koli prizadevanju in kar je dvojno tukaj.

Ključni vir tukaj je Referenca enotnosti skript. ScriptReference je baza podatkov, ki jo je mogoče iskati, na voljo za C # in Javascript, ki ima seznam vsakega ukaza in funkcije Unity z opisi njihovih funkcij in kratkimi primeri skladnja.

Če imate težave z urejevalnikom in vmesnikom Unityja ali kot video nastavitve po želji, je dolg seznam visokokakovostnih Video vadnice enotnosti Najboljše enotne 3D vadnice za začetnikeŽelite razviti igre z Unity, vendar ne veste, kje začeti? Poskusite eno izmed teh super Tutorialov Unity 3D danes. Preberi več na voljo. Obširnejša (vendar manj široka) besedilne vaje za enotnost so na voljo tudi pri CatLikeCoding.

Nazadnje, če imate vprašanja zunaj obsega dokumentacije ali vadnic, lahko postavite posebna vprašanja na odgovori. Unity3d.com. Ne pozabite, da odgovore dobijo prostovoljci, zato spoštujte njihov čas in najprej poiščite bazo podatkov, da se prepričate, da na vaše vprašanje še ni bilo odgovorjeno.

9. Izdelava igre / prevajanje v samostojno aplikacijo

Ko ste ustvarili nekaj, na kar ste ponosni (ali ste končali kloniranje našega rahlo primera pong Pong za prakso), je čas, da premaknite igro iz urejevalnika in jo spremenite v nekaj, kar lahko objavite v internetu in na to prisilite svoje prijatelje in družino igra. Če želite to narediti, boste morali sestaviti samostojno aplikacijo. Dobra novica je, da je v Unityju to zelo, zelo enostavno. Vendar pa obstaja nekaj potencialnih hickalov, na katere želite biti pozorni.

Za začetek vedite, da lahko zgradite samo projekt brez napak. V ta namen se prepričajte, da imate konzolo odprto, ko gradite. Obstaja nekaj pogojev napake, ki jih bo igra prezrla v urejevalniku, vendar bo vseeno prekinila poskus izdelave. To prikaže samo konzolo o napaki na konzolo, brez vidnih rezultatov na zaslonu, kar je lahko moteče, če pozabite preveriti. Ko boste prebrali igro, ki je brez napak, lahko izberete Nastavite nastavitve pod mapa ali pritisnite Ctrl > Shift
> B. Tako bo prikazan preprost dialog, ki vam omogoča, da zgradite svojo igro za več platform.

Programiranje igre z enotnostjo: Vodnik za začetnike programska igra enotnost 17

Postopek od tam je samoumeven: izberite možnosti in pritisnite graditi; igra vas bo pozvala, da se namesti mapa, kamor boste namestili izvedljiv in podatkovni imenik. Te dve datoteki je mogoče kopirati in distribuirati (samo preverite, ali ne zaračunavate igre, zgrajene v demo enoti Unity, saj to krši pogoje storitve).

10. Zaključne opombe

Kot pri vsakem orodju za razvoj iger je ključ do uspeha z Unity iterativni razvoj. Morate graditi v obvladljivih korakih - vsekakor biti ambiciozen, v majhnih koščkih pa biti ambiciozen in se urediti ti koščki takšni, da se tudi, če ti ne pade končna ambicija, vsaj končno zavežeš izdelek.

Najprej dobite najpomembnejše elemente: imejte v mislih svoje najmanj rentabilnega izdelka, najpreprostejša, najbolj gola kost, ki bi jo lahko ustvarili in še vedno čutite, kot da ste dosegli nekaj vrednega. Pojdite do tega minimalno izvedljivega projekta, preden nadaljujete na večje ambicije.

Ta vadnica vam daje močno izhodišče, vendar je najboljši način, da se naučite enotnosti z gradnjo igre. Začnite graditi igro, zapolnite vrzeli v svojem znanju, ko se bodo pojavili, in postopni pretok znanja bo hitro izničil stvari, ki jih ne presenetljivo hitro poznate.

Če ste vse to prebrali in vas nekoliko preplavi kodiranje, potrebno z Unityjem, preverite, kako naučite se razvoja iger z Unity Learn Unity Learn je najlažji način za obvladovanje razvoja igerŽelite začeti razvijati lastne igre? Unity Learn je najboljši in najpreprostejši način za učenje in obvladovanje tega, kar morate vedeti. Preberi več in preberite tudi naš vodnik kako narediti video igre brez kakršnega koli programiranja Kako narediti video igre brez kakršnega koli programiranjaŽelite narediti video igro, vendar je ne morete kodirati? Nato uporabite komplet za gradnjo video iger, s pomočjo katerega lahko izdelate igre, ne da bi bilo potrebno kodiranje! Preberi več .

Edinost je močno orodje in z malo raziskovanja lahko z njim gradite impresivne projekte hitreje, kot bi morda pričakovali. Povejte nam, kaj ste zgradili v spodnjih komentarjih - radi bi videli!

Andre je pisatelj in novinar s jugozahoda zajamčeno, da bo ostal funkcionalen do 50 stopinj Celzija in je vodoodporen do globine dvanajst metrov.