Reklama

Prekvapujúcou črtou internetovej ekonomiky je nárast indie videohier. Akonáhle bola exkluzívna doména tisícov štúdií s viac ako miliónmi dolárov typu triple-A, bolo vyvinutých množstvo nástrojov, ktoré priniesť moderné prostriedky na vývoj hier do rúk jednotlivcov alebo malých ad-hoc zbierok programátorov a dizajnérov. Už sme diskutovali o Najlepšie indie hry 10 nezávislých hier tak dobre, zabudnete, že sú vôbec nezávislíMôže sa však stať, že budete chcieť niečo odlišné od indie normy. Hra, ktorá sleduje indie hodnoty, ale je vyrobená s kvalitou, ktorú sú známe hry AAA najvyššej úrovne. Názvy ako ... Čítaj viac , nezabudnite teda skontrolovať, čo sa dá dosiahnuť pomocou nástrojov, ako je Unity.

Táto príručka je k dispozícii na stiahnutie vo formáte PDF zdarma. Stiahnite si programovanie hry s jednotou: Príručka pre začiatočníkov. Môžete to skopírovať a zdieľať so svojimi priateľmi a rodinou.

Tieto nezávislé tímy pre vývoj hier preukázali pohyblivosť a znášanlivosť voči rizikám, ktoré im v mnohých prípadoch umožňujú presadiť herné inovácie rýchlejšie ako ich veľké rozpočtové protějšky. V posledných rokoch malo premiéru niekoľko šokujúcich úspešných nezávislých titulov vrátane

instagram viewer
Minecraft, Limboa Super mäso chlapeca aj keď nemusíte robiť takéto hry takými zručnosťami, môžete vytvorte hru pomocou Buildboxu Ako si vyrobiť videohru za týždeň pomocouExistuje program, ktorý uľahčuje vývoj hier aj tým, ktorí nemajú absolútne žiadne skúsenosti s navrhovaním videohier. Volá sa to Buildbox. Preto by ste to mali vyskúšať. Čítaj viac .

V rýchlo sa rozvíjajúcej krajine vývoja hry indie jednota sa objavil ako niečo de facto štandardu: vďaka nízkym nákladom, ľahkému použitiu a širokej ponuke funkcií je ideálny pre rýchly vývoj hier. Jednota je tak flexibilná, že môžete dokonca vytvorte si vlastné herné ovládače Ako si vyrobiť vlastný herný ovládač s Arduino a jednotouUž ste niekedy chceli navrhnúť svoj vlastný herný ovládač? Je to jednoduchšie, ako si myslíte! Čítaj viac s trochou DIY know how!

Dokonca aj veľké ateliéry ako CCP (Developers of Eva online) použiť na rýchle prototypovanie herných konceptov. Unity poskytuje „herný engine v krabici“ - fyzikálny a renderovací engine s háčikmi pre niekoľko skriptovacích jazykov, prispôsobiteľný prakticky každému žánru videohry.

Aj keď Unity poskytuje vizuálny editor na manipuláciu s herným prostredím, Unity nie je nástroj na tvorbu hier s nulovým programovaním. Vyžaduje si, aby ste naprogramovali výsledky, ale zároveň vám poskytne oveľa flexibilnejší a výkonnejší nástroj, ako by mohol ktorýkoľvek program „tvorca hier“ mohol.

Jednota za vás nebude robiť prácu, ale podstatne znižuje bariéru vstupu. Počnúc úplne od nuly s C ++ a OpenGL, môže trvať niekoľko dní, kým sa dostane k bodu, keď je na obrazovke niečo skutočne vykreslené. Pomocou Unity to trvá asi desať sekúnd. Jednota vkladá základné prvky tvorby hier do rúk začínajúcich programátorov rýchlym a intuitívnym spôsobom.

Dnes vás prevediem všetkým, čo potrebujete vedieť, aby ste mohli hrať hru v jednote, ktorá je rozdelená do desiatich hlavných kapitol:

§1 - Verzie jednoty

§2 - Inštalácia jednoty

§ 3 - Stručný úvod k objektovo orientovanému paradigmatu

§4 - Základy jednoty

§5 - Príklad: Základné prvky hry

§6 - Skriptovanie v jednote

§7 - Príklad: Skriptovací tenis

§8 - Preskúmanie dokumentácie / Dozvedieť sa viac

§9 - Zostavenie hry / kompilácie do samostatnej aplikácie

§ 10 - Záverečné poznámky

1. Verzie jednoty

Jednota má dve základné príchute: pro verziu a verziu zadarmo. Tam sú počet rozdielov, ale všeobecne povedané, pro verzia podporuje množstvo vizuálnych vylepšení (napríklad mäkké tiene v reálnom čase a následné spracovanie) a veľké množstvo relatívne malých funkcií, ktoré sú mimoriadne užitočné pre zložitejšie hry.

To znamená, že pre väčšinu relatívne jednoduchých hier, ktoré by ste mohli chcieť zostaviť, je bezplatná verzia Unity úplne adekvátna. Nižšie podrobnejšie rozoberieme kľúčové rozdiely pre záujemcov.

1.1 Ceny

Bezplatná verzia Unity je samozrejme bezplatná. Existuje však niekoľko obmedzení: bezplatná verzia Unity nemôže byť licencovaná na žiadnu spoločnosť s ročným príjmom vyšším ako $100,000. Aj keď takéto organizácie nepatria do rozsahu tejto príručky, ak máte podozrenie, že by ste sa mohli stať takouto organizáciou, je pravdepodobne múdrejšie ísť na verziu Pro.

Verzia Unity je Pro $75 mesiac alebo $1500 pre trvalú licenciu a nemá žiadne obmedzenia týkajúce sa toho, čo môžete robiť s hrami vytvorenými s ňou. K dispozícii je tiež 30-dňová bezplatná skúšobná verzia, ktorú budeme používať v tejto príručke, aby sme vám poskytli čo najúplnejší prehľad dostupných funkcií. Prostredníctvom je k dispozícii aj jednoročná študentská licencia chladivé pre $129.

1.2 Funkcie

Vo voľnej verzii Unity je veľa funkcií. Najdôležitejšie rozdiely sú však nasledujúce: vo bezplatnej verzii Unity chýba množstvo možností vykresľovania, ktoré umožňujú lepšie vyzerajúce a rýchlejšie bežiace hry (podpora LOD, následné spracovanie na ploche obrazovky, pokročilé shadery, mäkké tiene v reálnom čase a odložené rendering). To tiež chýba naplno mechanický animačný systém, a niektoré nástroje AI.

Vo všeobecnosti platí, že pre komplexné rozsiahle projekty alebo projekty, kde je dôležitý grafický výkon, je výhodná profesionálna verzia. Používam profesionálnu verziu, pretože vyvíjam hry pre virtuálnu realitu pre Windows XP Oculus Rift Oculus Rift ReviewVirtuálna realita nie je nová, ale je to konečne cenovo dostupné av rámci nášho pochopenia. Po štyroch rokoch a dvoch vývojových prototypoch prišla konečná spotrebiteľská edícia modelu Oculus Rift. Čítaj viac , a podpora post-processingu na obrazovke je potrebná pre správnu interakciu s headsetom.

2. Inštalácia jednoty

Inštalácia je jednoduchá. Spustiteľný súbor si môžete stiahnuť z unity3d.com/get-unity/download.

Po stiahnutí ho spustite a potom postupujte podľa pokynov inštalačného programu. Po dokončení inštalácie sa zobrazí okno s názvom „aktivovať licenciu Unity“. Začiarknite políčko „aktivovať bezplatnú 30-dňovú skúšobnú verziu Unity Pro“ a potom „OK“.

Blahoželáme! Teraz máte 30-dňovú skúšobnú verziu Unity Pro. Po uplynutí skúšobnej doby, ak si neželáte kúpiť profesionálnu verziu, môžete prepnúť na bezplatnú verziu a ponechať si svoj existujúci obsah.

3. Stručný úvod do objektovo orientovaného paradigmy

Predtým, ako začneme s Unity, je dôležité, aby sme trochu prešli základy. Jednota podporuje obidve C # a JavaScript pre programovanie hier 7 jazykov pre jednotný vývoj hier, ktoré je potrebné sa naučiť: Ktorý je najlepší?Chcete začať s vývojom hier v Unity? Budete potrebovať znalosť jedného z týchto jazykov kompatibilných s jednotou. Čítaj viac ; budeme pracovať s C # pre tento tutoriál.

Po prvé, ak ste ešte nikdy nenaprogramovali, odložte tento tutoriál a strávte niekoľko dní prácou cez Microsoft Jazykový základný jazyk C # kým sa nebudete cítiť pohodlne používať jazyk na jednoduché úlohy.

Ak by ste chceli niečo trochu odlišné od jazyka C # (ale nie nevyhnutne jazyk, ktorý môžete používať v Unite), prečítajte si nášho sprievodcu šesť najjednoduchších programovacích jazykov pre začiatočníkov 6 najjednoduchších programovacích jazykov, ktoré sa majú učiť začiatočníciNaučiť sa programovať je o hľadaní správneho jazyka rovnako ako o procese editácie. Tu je šesť najjednoduchších programovacích jazykov pre začiatočníkov. Čítaj viac .

Ak ste už predtým naprogramovali v imperatívnom alebo objektovo orientovanom jazyku, ako je C alebo Java, zoznámte sa s tým, ako sa C # líši od ostatných jazykov, ktoré ste používali v minulosti. V žiadnom prípade nepokračujte v tutoriále, kým sa nebudete cítiť pohodlne pri riešení jednoduchých problémov s C # (napríklad, ak by som sa mal opýtať Ak chcete napísať program, ktorý vytlačí prvých sto prvočísel, mali by ste byť schopní napísať tento program bez konzultácie Google).

Najdôležitejším konceptom, ktorému je potrebné porozumieť, je objektovo orientovaná paradigma Odkiaľ pochádza objektovo orientované programovanie?Objektovo orientovaný nie je iba náhodné bzučiak, ktorý počujete v programovacích kruhoch. Za menom je dôvod - ale čo? Pripojte sa ku mne, keď preskúmam niektoré základy programovacích konceptov a vysvetlím ... Čítaj viac (skrátene ako OOP). V objektovo orientovaných jazykoch sa programy delia na funkčné jednotky nazývané objektov. Každý objekt má svoje vlastné súkromné ​​premenné a funkcie. Nazývajú sa funkcie špecifické pre daný objekt metódy.

Myšlienka je modularita: tým, že každý objekt je izolovaný a núti ďalšie objekty, aby s ním interagovali prostredníctvom svojich metód môžete znížiť počet možných neúmyselných interakcií - a teda aj chyby. Môžete tiež vytvárať objekty, ktoré môžete znova použiť bez akýchkoľvek úprav. V Unity budete tieto objekty stavať a pripájať k nim herné jednotky (ktorého správanie sa bude riadiť).

Objekty sú vytvorené z vyučovanie: trieda je iba súbor, ktorý obsahuje definíciu vášho objektu. Takže, ak chcete Mook objekt, ktorý spracováva AI pre nepriateľa vo vašej hre, napísali ste triedu „Mook“ a potom tento súbor pripojili ku každej nepriateľskej entite. Po spustení hry bude každý nepriateľ vybavený kópiou objektu „Mook“.

Pripevnenie nového skriptu k objektu vyzerá takto:

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 1

Najprv, vyberte objekt a choď na inšpektor. Klikni na Pridať komponent Tlačidlo.

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 2

Ísť do nový skript, zadajte požadované meno a kliknite na tlačidlo vytvoriť a pridať.

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 3

Teraz máte nový skript, ktorý môžete upravovať dvojitým kliknutím naň!

Súbor triedy vyzerá asi takto:

pomocou UnityEngine; verejná trieda Mook: MonoBehaviour {private float health; void Start () {health = 100; } void Update () {if (health> 0) {/ * Vyhľadajte hráča, ak narazíte na hráča na ceste, zabite ho, ak budete zasiahnutý, odstráňte náhodné množstvo zdravia * /}} }

Pozrime sa na to:

  • Používanie UnityEngine: Tento riadok hovorí C #, že chceme používať knižnice Unity, ktoré nám umožňujú pripojiť sa k hernému enginu Unity.
  • Verejná trieda Mook: MonoBehaviour:Tento riadok deklaruje triedu a jej názov - Mook.
  • Súkromné ​​zdravie plaváka: Toto deklaruje premennú súkromnej triedy (ktorá sa dá zmeniť iba zvnútra triedy). Premenná je uvedená v štart.
  • Prázdny štart (): Týmto je deklarovaná metóda nazývaná štart. Štart je špeciálna metóda, ktorá sa spustí iba raz pri spustení hry.
  • Neplatná aktualizácia (): Aktualizácia je ďalšia špeciálna metóda, ktorá sa spúšťa v každom rámci. Väčšina vašej logiky hry pôjde tu.
  • // Ak narazíte na hráča na ceste, zabite ho: Tento riadok je komentár (každý riadok začínajúci dvojitým lomítkom je ignorovaný pomocou C #). Komentáre sa používajú na pripomenutie si toho, čo konkrétne kúsky kódu robia. V tomto prípade sa táto poznámka používa na zastupovanie komplikovanejšieho bloku kódu, ktorý v skutočnosti robí to, čo komentár popisuje.

Spolu s štart a aktualizovať, môžete si vytvoriť vlastné metódy s takmer akýmkoľvek menom. Metódy, ktoré vytvoríte, sa však nebudú spúšťať, pokiaľ nebudú volané. Vyhlásme metódu pre hypotetickú triedu s názvom addTwoNumbers ktorý sčíta dve čísla:

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

Táto deklaruje verejnú (prístupnú pre iné objekty) metódu, ktorá vracia float, volaný addTwoNumbers, ktorý berie ako vstup dva plávajúce znaky (nazývané a b). Potom vráti súčet týchto dvoch hodnôt ako výstup.

Volanie tejto metódy z rovnakej triedy (povedzme zvnútra aktualizovať) vyzerá takto:

float result = addTwoNumbers (1, 2);

Volanie metódy z inej triedy je podobné:

inštancia addTwoNumbers; float result = instance.addTwoNumbers (1, 2);

Opäť to len vytvorí inštanciu našej triedy, sprístupní príslušnú metódu a vloží jej čísla, ktoré chceme pridať, a výsledok uloží do následok. Jednoduchá.

Ak je váš skript pripojený k objektu, ktorý má špeciálne vlastnosti (napríklad emitor častíc), ku ktorým nie je možné získať prístup v rámci normálnej sady parametrov GameObject si môžete zvoliť, že sa s ňou bude zaobchádzať ako s iným druhom hernej entity GetComponent metóda.

Syntax pre to vyzerá takto:

GetComponent().Hrať();

Ak je pre vás niečo z toho neznáme, vráťte sa späť a prejdite cez primer C #. Keď budeme pokračovať, ušetrí vám to veľa frustrácie.

4. Základy jednoty

V tejto časti sa budeme zaoberať základnou mechanikou motora Unity. Pracovný tok v Unity ide takto:

  1. Vytvorte entitu, ktorá bude slúžiť úlohe v hre (prázdna GameObjects možno použiť na abstraktné logické úlohy).
  2. Napíšte alebo vyhľadajte súbor triedy a pridajte ho k entite ako skript (pomocou Pridať komponent tlačidlo v inšpektor vyhliadka.
  3. beh > test > ladiť > opakovať kým to nefunguje a prejdite k ďalšiemu prvku hry.

Jednota prichádza s niekoľkými základnými kartami zobrazenia, ktoré je možné rozložiť rôznymi spôsobmi podľa vkusu používateľa. Veľkých päť je:

  1. Hra: zobrazuje bežiacu inštanciu hry, s ktorou môžete pracovať a testovať.
  2. scéna: poskytuje statickú, upraviteľnú verziu herný svet.
  3. inšpektor: umožňuje zmeniť jednotlivé entity v hernom svete ich výberom v editor tab.
  4. projekt: vám umožňuje prehliadať súbory projektu a presúvať modely, materiály a ďalšie zdroje do editor umiestnite ich do herného sveta.
  5. hierarchie: táto karta zobrazuje všetky objekty na svete, čo vám umožňuje nájsť vzdialené objekty na scéne a nadradené entity k sebe kliknutím a ťahaním.

Na obrázku nižšie nájdete umiestnenia všetkých týchto vecí:

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 0

4.1 Jednotné subjekty

4.1.1 Oká

Oká sú tou správnou cestou 3D geometria je zastúpená v jednote. Môžete použiť vstavanú jednotku Unity primitívne objektov (kocky, gule, valce atď.) alebo importujte svoje vlastné 3D modely z modelového balíka, ako je napr mixér Začíname s programom Blender: 7 fantastických návodov pre nováčikov3D modelovanie je vynikajúci spôsob, ako precvičiť kreativitu pri zachovaní kontaktu s vašou technickou stránkou. Tu je niekoľko úžasných bezplatných návodov. Čítaj viac alebo Maya Učíme sa Maya 2016: Kde začaťMaya je nástroj používaný na 3D animáciu, ale prichádza s neuveriteľne strmou krivkou učenia. Aký dobrý učebný materiál existuje? Čítaj viac . Unity podporuje rôzne 3D formáty vrátane .fbxa .3ds.

Základnými nástrojmi na manipuláciu s okami sú tlačidlá na zmenu mierky, rotáciu a posun v ľavom hornom rohu rozhrania. Tieto tlačidlá pridávajú do modelov v zobrazení editora ovládacie ikony, ktoré potom môžu byť použité na manipuláciu s nimi vo vesmíre. Ak chcete zmeniť vlastnosti textúry alebo fyziky objektu, vyberte ich a použite inšpektor pohľad analyzovať materiál a tuhé teleso prvky.

4.1.2 Prvky GUI

Tradičné GUI sprites a text možno zobraziť pomocou GUI Text a GUI Textúra GameObjects v editore. Robustnejším a realistickejším spôsobom zaobchádzania s prvkami používateľského rozhrania je použitie 3D text a quad GameObjects (s priehľadnými textúrami a nesvieteným priehľadným shaderom) na umiestnenie prvkov HUD do herného sveta ako entít.

V hierarchie Ak chcete zobraziť tieto herné prvky, môžete ich presunúť na hlavný fotoaparát, aby sa z nich stali deti, čím sa zaistí, že sa s fotoaparátom budú pohybovať a otáčať.

Prvky grafického používateľského rozhrania (text a textúry) môžu byť prispôsobené pomocou príslušných polí na karte Inšpektor.

4.1.3 Materiály

Materiály sú kombináciou textúr a shadery Vysvetlených päť dôležitých podmienok pre hranie na PCAk hráte hru na konzole, technické podrobnosti sa spracúvajú za vás. Niektorí hráči to dávajú prednosť, ale hráči PC si často užívajú väčšiu mieru kontroly, ktorú majú nad očami hry ... Čítaj viac a môžete ich pretiahnuť priamo na herné objekty z karty projektu. Unity Pro obsahuje veľké množstvo shaderov a textúru, ktorá je k nim pripojená, môžete upraviť pomocou karty inšpektora pre objekt, na ktorý sa vzťahujú.

Ak chcete importovať textúru, skonvertujte ju na a .jpg, .pngalebo bmpa pretiahnite ho do aktíva v adresári projektu Unity project (ktorý sa objaví v priečinku Moje dokumenty predvolene). Po niekoľkých sekundách sa v editore zobrazí záťažová lišta. Po dokončení budete môcť nájsť obrázok ako textúru pod textom projekt tab.

4.1.5 Svetlá

Svetlá sú GameObjects ktoré premietajú žiarenie na svet. Ak vo vašej scéne nie sú žiadne svetlá, všetky polygóny sú nakreslené na rovnakej úrovni jasu, čo dáva svetu plochý, vyblednutý vzhľad.

Svetlá môžu byť umiestnené, otočené a môžu mať niekoľko vnútorných charakteristík, ktoré si môžete prispôsobiť. intenzita posuvník ovláda jas svetla a rozsah riadi, ako rýchlo to mizne.

Usmernenia uvedené v scénický pohľad ukážte maximálny rozsah osvetlenia. Hrajte s oboma nastaveniami, aby ste dosiahli požadovaný efekt. Môžete tiež upraviť farbu svetla, vzor (sušienka na povrchu je svetlo nasmerované a na aký druh svetlice sa pri pohľade priamo na svetlo objaví na obrazovke. Cookie môžu byť použité na falošné realistickejšie svetelné vzory, vytváranie dramatických falošných tieňov a simuláciu projektorov.

Tri hlavné druhy svetla sú škvrna, boda smerový.

Bodové svetlá mať polohu v 3D priestore a premietať svetlo iba v jednom smere v kuželi s premenlivým uhlom. Sú vhodné pre baterky, svetlomety a vo všeobecnosti poskytujú presnejšiu kontrolu osvetlenia. Bodové svetlá môžu vrhať tiene.

Bodové svetlá mať polohu v 3D priestore a rovnomerne vrhať svetlo vo všetkých smeroch. Bodové svetlá nevrhajú tiene.

Smerové svetláNakoniec sa používajú na simuláciu slnečného svetla: premietajú svetlo v smere akoby nekonečne ďaleko. Smerové svetlá ovplyvňujú každý objekt v scéne a môžu vytvárať tiene.

4.1.6 Časticové systémy

Časticový systém je a GameObject ktorý generuje a riadi stovky alebo tisíce častíc súčasne. Častice sú malé, optimalizované 2D objekty zobrazené v 3D priestore. Časticové systémy používajú zjednodušené vykresľovanie a fyziku, ale môžu zobraziť tisíce entít v reálnom čase bez koktania, vďaka čomu sú ideálne pre dym, oheň, dážď, iskry, magické efekty a ďalšie.

Existuje veľa parametrov, ktoré môžete vyladiť, aby ste dosiahli tieto účinky, a môžete k nim získať prístup vytvorením časticového systému pod editor komponentov > výber systému častíc > otvorenie záložky inšpektora. Môžete zmeniť veľkosť, rýchlosť, smer, rotáciu, farbu a textúru každej častice a nastaviť väčšinu týchto parametrov tak, aby sa časom menila.

Pod Zrážka atribútu, ak ho povolíte a nastavíte simulačný priestor na svet dostanete častice, ktoré sa budú zrážať s predmetmi na svete, ktoré sa dajú použiť na celý rad realistických účinkov na častice vrátane dažďa, tečúcej vody a iskier.

5. Príklad: základné prvky hry

Pre tento tutoriál pripravíme jednoduchú hru pong - niečo, čo sme už predtým niekoľkokrát venovali DIY:

  • Arduino Classic Pong Ako obnoviť klasickú hru tenis pomocou ArduinoPong bol vôbec prvý videoher, ktorý dosiahol masový trh. Prvýkrát v histórii sa vďaka Atari 2600 -... dostal do rodinného domu koncept „videohry“. Čítaj viac
  • Arduino OLED Pong Arduino retro hry s OLED displejomZaujímalo vás niekedy, koľko práce je potrebné na napísanie vašich vlastných retro hier? Ako ľahké je Pong kódovať Arduino? Čítaj viac

V tejto časti prejdeme na usporiadanie základných prvkov - skriptovací tutoriál príde neskôr.

Najprv rozdeľme hru Pong na jej základné komponenty. Najprv potrebujeme dve lopatky a loptičku. Lopta letí mimo obrazovku, takže budeme potrebovať mechanizmus, ktorý ju resetuje. Chceme tiež, aby text zobrazoval aktuálne skóre, a aby sme vám ukázali všetky základné prvky jednoty, budeme chcieť, keď narazíte do lopty, efekt fantázie. Celá hra bude musieť byť dramaticky osvetlená.

To sa rozpadá na a guľový predmet (guľa), a spawner, dve lopatkové podpery s žiariče častíc pripojené, a Entita v 3D textea a bodové svetlo. V tomto návode použijeme predvolený fyzikálny materiál odskočiť, s odraziť kombinovať nastavený na násobenie. Ako vyzerá toto nastavenie, v desiatich snímkach obrazovky:

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 4
Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov

Najprv vytvorte kocka prop pre pádlo.

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 6

Primerane ich prispôsobte, duplikovať to, a dal sféra medzi lopatkami loptičky.

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 7

Potom vytvorte 3DText objekt a mierka a pozície správne, meníte veľkosť písma Atribút na získanie menej pixelovaného obrázka.

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov

Potom vytvorte dva časticové systémy, vyberte požadované vlastnosti a pripojte ich k pádlom.

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 9
Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 10

Ďalej budete chcieť umiestnite a otočte fotoaparát aby správne zarámoval scénu. Keď je vybratá kamera, v pravom dolnom rohu môžete vidieť malý náhľad pohľadu kamery.

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 11

Predtým, ako skončíme, musíme si vytvoriť dve ďalšie kocky, ktoré budú nárazníkmi, aby sme zabránili odrážaniu lopty z oblasti hry. Zrušením začiarknutia políčka ich môžeme zviditeľniť pletivo v karta inšpektora.

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 13
Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 14

Ak zasiahnete hru, môžete teraz vidieť základné prvky našej hry. Zatiaľ nič neurobia, ale dostaneme sa k tomu!

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov

Teraz, keď máme toto nastavenie, budeme hovoriť o tom, čo sa podieľa na skriptovaní týchto prvkov na vytvorenie hry.

6. Skriptovanie v jednote

Akonáhle budete mať k objektu pripojený skript, môžete ho revidovať dvojitým kliknutím na ikonu v inšpektor. Toto sa otvorí MonoDevelop, predvolené vývojové prostredie pre Unity. Monodevelop je v podstate textový editor s vlastnosťami špeciálne optimalizovanými na programovanie.

Kľúčové slová a komentáre sú zvýraznené v Modrá a zelenáa číselné hodnoty a reťazce sa objavia v červená. Ak ste použili eclipse alebo iných IDE, MonoDevelop je veľmi podobný. Môžeš build svoje skripty z vnútra editora, aby ste skontrolovali chyby syntaxe, napríklad:

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 15

Vo všeobecnosti, ak chcete, aby skript interagoval s jednotou, musíte referencovať prvky, ktoré má objekt, ktorý skript vlastní (zoznam týchto prvkov nájdete pod inšpektor pri výbere príslušného objektu). Potom môžete zavolať metódy alebo nastaviť premenné pre každý z týchto prvkov na vykonanie požadovaných zmien.

Ak chcete, aby skript na objekte ovplyvnil vlastnosti iného objektu, môžete vytvoriť prázdny GameObject premennú vo vašom skripte a použite inšpektor priradiť ho inému objektu v scéne.

Zoznam prvkov, ktoré môže mať objekt, je nasledujúci (prevzatý z pohľadu inšpektora jedného z našich pádiel v uvedenom príklade):

  1. premeniť
  2. Kocka (sieťový filter)
  3. Box Collider
  4. Mesh Renderer

Každý z týchto aspektov objektu môže byť ovplyvnený skriptom. Ďalej sa pozrieme na to, ako presne.

6.1 Transformácia

Funkcie transformácie pre GameObject v Unity kontrolujú fyzikálne parametre tohto objektu: jeho mierka, jeho pozície, a jeho orientácia. Môžete k nim pristupovať z tohto skriptu:

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

Vo vyššie uvedených príkladoch sú menované premenné typov špecifikovaných v názvoch. Tu je niekoľko kľúčových detailov: poloha a mierka sa podľa očakávania uložia ako Vector3s. Máte prístup k X, Ya Z súčasti každého z nich (napríklad transform.position.y vám poskytuje vzdialenosť objektu nad nulovou rovinou).

Avšak vyhnúť sa kardanový zámok, rotácie sa spracovávajú ako štvorica (štvorzložkové vektory). Pretože kvartióny manipulujúce s rukami nie sú intuitívne, môžete rotácie pomocou Eulerovských uhlov manipulovať Štvorica. Euler metóda ako je táto:

transform.rotation = Quaternion. Euler (smola, vybočenie, zvitok);

Ak si prajete hladko premiestňovať objekty z jedného miesta na druhé, nájdete Slerp užitočná metóda pre kvaternály a vector3s. Slerp berie tri argumenty - aktuálny stav, konečný stav a rýchlosť zmeny a plynule medzi nimi interpoluje pri danej rýchlosti. Syntax vyzerá takto:

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

6.2 Renderer

Funkcie vykresľovacieho modulu v Unity vám umožňujú kontrolovať spôsob vykresľovania povrchov rekvizít na obrazovke. Môžete priradiť štruktúru, zmeniť farbu a zmeniť tieň a viditeľnosť objektu. Syntax vyzerá takto:

renderer.enabled = false; renderer.material.color = nová farba (0, 255, 0); renderer.material.mainTexture = myTexture; renderer.material.shader = newShader;

Väčšina z nich má celkom jasné funkcie. Prvý príklad robí predmet neviditeľným: užitočný trik v mnohých situáciách. Druhý príklad priraďuje nový RGB farba (konkrétne zelená) k predmetnému predmetu. Tretia priradí novej rozptýlenej textúre novej premennej textúry. Posledný príklad zmení shader materiálu objektu na novo definovanú premennú shadera.

6.3 Fyzika

Jednota prichádza s integrovaným fyzikálnym motorom - niečo také fyzika pieskovisko hry Smash, Drive & Build: 3 úžasné simulátory fyzickej karantény Čítaj viac všetky použitia. To vám umožní priradiť fyzikálne vlastnosti objektov a nechať za vás spracovávať podrobnosti ich simulácie. Všeobecne platí, že namiesto pokusu o implementáciu vlastnej fyziky pomocou učebnice a transformačného systému je použitie fyzického motora Unity v najväčšej možnej miere jednoduchšie a spoľahlivejšie.

Všetky fyzikálne rekvizity vyžadujú colliders. Samotnú skutočnú simuláciu však rieši a tuhé teleso, ktoré možno pridať do inšpektor vyhliadka. Pevné disky môžu byť kinematický alebo nonkinematic.

Stĺpce kinematickej fyziky sa zrážajú s (a účinkujú) nekinatickými stĺpmi fyziky okolo nich, ale nie sú ovplyvnené samotnou kolíziou. Statické kinematické rekvizity sú príslovečné nehnuteľné objekty a pohybujúce sa kinematické objekty sú príslovečná nezastaviteľná sila (pre záznam, keď sa zrazia, jednoducho prechádzajú každou z nich) Iné).

Okrem toho môžete upraviť uhlový ťah objektu (koľko energie točí, aby sa točil), zmeniť jeho hmotnosť, diktovať, či je ovplyvnený gravitáciou alebo nie, a použiť naň sily.

Príklady:

rigidbody.angularDrag = 0,1f; rigidbody.mass = 100; rigidbody.isKinematic = false; rigidbody.useGravity = true; tuhé teleso. AddForce (transformácia vpred * 100);

To všetko je celkom samozrejmé. Jediná vec, ktorú tu treba poznamenať, je použitie transform.forward. Všetky Vector3 majú tri komponenty (.forward, .upa .správny), ktoré sú s nimi spojené, ku ktorým je možné získať prístup a rotovať s nimi (vpred je smer modrej šípky v editore). transform.forward Kľúčové slovo je jednoducho forwardový vektor pre aktuálny objekt s veľkosťou 1. Môže sa vynásobiť plavákom, aby sa na objekt vytvorila väčšia sila. Môžete tiež odkázať transform.up a transform.righta odmietnite ich, aby sa dostali späť.

6.4 Kolízia

Pri zostavovaní hry by ste často chceli, aby kolízia spôsobila nejakú zmenu stavu v kóde, ktorá by presahovala iba fyzickú simuláciu. Na tento účel budete potrebovať metóda detekcie zrážok.

Na odhalenie kolízií v jednote je potrebné určité množstvo prípravných prác. Najprv musí aspoň jeden z objektov pri zrážke a neinematický rigidbody pripojený k nemu. Obidva objekty musia mať správne kolektory, nastavené tak, aby neboli spúšťačmi. Celková rýchlosť oboch objektov musí byť dostatočne nízka, aby sa skutočne zrazili, namiesto jednoduchého preskakovania.

Ak ste sa o všetko postarali, môžete skontrolovať kolíziu umiestnením špeciálnej metódy detekcie kolízie do skriptu pripojeného k objektu, s ktorým chcete kolíziu skontrolovať. Metóda bude vyzerať takto:

void OnCollisionEnter (Collision other) {// robiť veci tu. }

Táto metóda sa automaticky spustí počas prvého rámca, keď sa iný objekt dotkne vášho objektu. Kolízna entita ostatné je odkaz na objekt, ktorý ste zasiahli. Môžete napríklad odkázať gameobject, tuhé telesoa premeniť vlastnosti, ktoré s ňou môžu rôzne manipulovať. zatiaľ čo OnCollisionEnter je pravdepodobne najbežnejšia funkcia, ktorú budete používať, môžete tiež použiť OnCollisionExit a OnCollisionStay (s inak identickou syntaxou a použitím), ktoré sa aktivujú počas prvého rámca, ktorý prestane srážať s objektom, a počas každého rámca, s ktorým s objektom narazíte.

Niekedy môže byť užitočné robiť aj to, čo sa volá raycasting. Pri raycastingu nekonečne tenká čiara (a lúč) je prenášaná svetom z nejakého pôvodu, pozdĺž nejakého vektora, a keď niečo zasiahne, vráti sa poloha a ďalšie podrobnosti o prvej zrážke. Kód pre raycast vyzerá takto:

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

Toto vysiela lúč z pozície aktuálneho objektu pozdĺž -Vector3.up (priamo nadol) a prepája premennú hit k prvému objektu, s ktorým sa zrazí. Akonáhle váš lúč niečo zasiahne, získate prístup hit.distance - určiť, ako ďaleko je, alebo - hit. GameObject na manipuláciu s objektom, ktorý ste zasiahli.

Raycasty, ako je tento, môžu byť použité pre strelcov na určenie toho, na čo je zbraň namierená, alebo na výber objektov, keď sa na ne fotoaparát pozerá, alebo pre určité štýly pohybových mechanizmov.

6.5 Časová korekcia

Pri manipulácii s objektmi je potrebné mať na pamäti jeden dôležitý faktor snímok za sekundu. Bez ohľadu na to, ako starostlivo optimalizujete, snímkové rýchlosti sa budú vždy líšiť a vy nechcete, aby sa rýchlosť hry zodpovedajúcim spôsobom menila. Ak niekto spustí hru na rýchlejšom počítači, než na ktorom ste ju vyvinuli, nechcete, aby hra fungovala dvojnásobnou rýchlosťou.

Spôsob, akým to napravíte, je vynásobením hodnôt, ktoré používate, časom, ktorý bol potrebný na vykreslenie posledného snímky. To sa vykonáva pomocou Time.deltaTime. Tým sa účinne zmení rýchlosť každej premennej, z ktorej zvyšujete každý rámec zmena na snímku na zmena za sekundua pravdepodobne by ste mali urobiť túto zmenu na akejkoľvek hodnote, ktorú zvyšujete alebo znižujete v každom rámci.

6.6 Zdroje zvuku a poslucháči

Teraz, keď sme sa zaoberali tým, ako vytvárať, vykresľovať a kontrolovať objekty, povedzme o inom zmysle, aký môžu počítačové hry slúžiť: zvuk. Jednota podporuje dva druhy zvukov: 2D a 3D zvuky. Zvuky 3D menia svoj objem podľa vzdialenosti a pri pohybe vzhľadom na fotoaparát sa deformujú. 2D zvuky nie.

2D zvuky sú vhodné pre hlasové prenosy a hudbu na pozadí a 3D zvuky sa vzťahujú na zvuky generované udalosťami na svete. Ak chcete zmeniť, či je zvuk 3D, vyberte ho v projekt zobraziť, prepnúť na inšpektor a vyberte príslušnú možnosť z rozbaľovacej ponuky, potom stlačte kláves importovať Tlačidlo.

Ak chcete zvuk skutočne prehrať, musíte pripojiť audiosource na rekvizitu (rekvizitu, z ktorej má zvuk vychádzať, v prípade 3D zvuku). Potom budete musieť otvoriť audioclip a vyberte zvukový súbor.

Môžeš použiť myAudioSource. Pauza() a myAudioSource. Hrať() na ovládanie týchto zvukových súborov. Môžete upraviť správanie proti falšovaniu, hlasitosť a dopplerovské posúvanie zvukov pod inšpektor pre zdroj audiosource.

6.7 Vstup

Hra, ktorá nemá žiadny vstup od používateľa, nie je vecou hry. Existuje veľa rôznych druhov vstupov, ktoré si môžete prečítať, a takmer všetky z nich sú prístupné cez internet vstup a keycode objektov. Niektoré príklady vstupných príkazov (ktoré majú hodnoty vyhodnotené v každom rámci) sú uvedené nižšie.

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

Funkcie týchto riadkov sú väčšinou samovysvetľujúce. Pomocou týchto troch druhov vstupných referencií môžete rekonštruovať kontrolné schémy najmodernejších 3D počítačových hier.

6.8 Ladenie skriptu

Povedzme, že skript nefunguje. Ako hovorí dobrý lekár, pre vás sa môžu vyskytnúť nárazy a zavesenia. Ak sa na vašom C # vyskytnú priame chyby syntaxe, hra sa zvyčajne pri hraní hry odmietne spustiť a ak sa vyskytnú niektoré užitočné chybové hlásenia, build skripty zvnútra editora. Pozri nižšie:

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 16

Tieto chyby zvyčajne nie sú najťažšie opraviteľné. Problematickejšie môžu byť nenápadné sémantické chyby, v ktorých ste úspešne napísali súbor plný platných C # - jednoducho nie taký, ktorý robí to, čo ste si mysleli. Ak máte jednu z týchto chýb a máte ťažkosti s jej odstránením, môžete skúsiť situáciu vylepšiť zopár vecí.

Prvým je pozastavenie vykonávania hry a kontrola konzoly. Hru môžete pozastaviť kliknutím na ikonu pauza v hornej strednej časti editora a potom vyberte konzola od spodnej časti okna okno menu (alebo stlačením ctrl > smena > C). Aj keď neexistujú žiadne chyby, varovania môžu stále pomôcť dať nejaké náznaky o tom, čo by sa mohlo pokaziť.

Ak to nefunguje, môžete sa tiež pokúsiť získať predstavu o stave skriptu vytlačením stavu vnútorných premenných a overiť, či program robí to, čo si myslíte, že robí. Môžeš použiť Ladenie. Denník (reťazec) vytlačiť obsah reťazca na konzolu, keď spustenie programu zasiahne tento riadok. Všeobecne platí, že ak pracujete opačným smerom, ako si myslíte, že by sa malo diať cez veci, ktoré by mali byť aby sa to stalo, nakoniec sa dostanete do bodu, keď vaše ladiace výtlačky nerobia to, čo od nich očakávate robiť. Tam je vaša chyba.

7. Príklad: Skriptovací tenis

Aby sme mohli zostaviť Pong, rozdeľme hru na jej základné prvky: potrebujeme guľu, ktorá sa odrazí sem a tam medzi pádlami pri zvyšovaní rýchlosť, potrebujeme hodnotiacu tabuľku, ktorá vie, kedy gule prešli lopatkami, a potrebujeme mechanizmus na reštartovanie lopty, keď nedeje. Dobrým prvým krokom by bolo pridať do lopty ne-kinematické rigidné teleso, dve kinematické rigidné telieska pádla, deaktivujte gravitáciu pre všetkých z nich a zo štandardných aktív priraďte vhodný fyzikálny materiál (odskočiť s odraziť kombinovať nastavený na násobenie).

Nižšie si môžete prezrieť skript pre loptu s vysvetlivkami. Lopta musí splniť niektoré základné ciele: mala by sa odraziť v zložitom vzore, vždy udržiavajúcom pohyb na oboch osiach a mal by sa zrýchľovať pri náročnom, ale nie nemožnom tempe v horizontále smer.

BallHandler.cs

Ďalej musíme skriptovať naše pádlo, ktoré si môžete pozrieť nižšie. Pádlo sa musí pohybovať nahor a nadol v reakcii na stlačenie klávesov (ale nie mimo určitých hraníc). Musí tiež spustiť systém častíc, keď sa s niečím zrazí.

PaddleHandler.cs

Ďalej potrebujeme nepriateľskú umelú inteligenciu: niečo, čo spôsobí, že nepriateľovo pádlo sa bude sledovať smerom k lopte s pevnou sadzbou. Na tento účel použijeme Vector3.Slerp pre maximálnu jednoduchosť. Páčilo by sa nám tiež rovnaké správanie sa častíc, aké vidíme na našom vlastnom pádle.

EnemyAI.cs

Nakoniec potrebujeme skript na aktualizáciu výsledkovej tabuľky a resetovanie lopty, keď to prekročí hranice.

ScoreboardUpdater.cs

S priloženými skriptami a vyplnenými referenciami, keď spustíme našu hru Pong, zažívame hrateľnosť!

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 18

Môžeš stiahnite si moje demo Pong, ak by ste chceli vidieť všetko, čo som načrtol v akcii. Beží na systémoch Windows, Mac a Linux.

8. Preskúmanie dokumentácie / dozvedieť sa viac

Jednota je komplexný motor s mnohými ďalšími funkciami, ako by sa dalo v sprievodcovi tohto štýlu reálne pokryť, a to ešte pred tým, ako začnete používať širokú škálu (bezplatných a komerčných) rozšírení Unity dostupných na webe internet. Táto príručka vám poskytne silné východiskové miesto pre vývoj hry, ale samovzdelávanie je dôležitou zručnosťou v každom úsilí, a to dvojnásobne tu.

Kľúčovým zdrojom je tu Unity ScriptReference. ScriptReference je prehľadávateľná databáza, ktorá je k dispozícii pre C # aj Javascript, ktorý obsahuje zoznam každého príkazu a funkcie Jednoty, s opismi ich funkcií a krátkymi príkladmi syntax.

Ak máte problémy s editorom a rozhraním Unity alebo máte radi videonávody, uprednostňujeme dlhý zoznam kvalitných Jednotné videonávody Najlepšie Unity 3D návody pre začiatočníkovChcete vyvíjať hry s Unity, ale neviete, kde začať? Vyskúšajte jeden z týchto úžasných výukových programov Unity 3D ešte dnes. Čítaj viac k dispozícii. Rozsiahlejší (ale menej široký) textové príručky pre Unity sú k dispozícii aj od spoločnosti CatLikeCoding.

A nakoniec, ak máte otázky, ktoré presahujú rámec dokumentácie alebo tutoriálov, môžete položiť konkrétne otázky na odpovede. Unity3d.com. Nezabudnite, že odpovede poskytujú dobrovoľníci, preto rešpektujte ich čas a najskôr prehľadajte databázu, aby ste sa uistili, že vaša otázka už nebola zodpovedaná.

9. Zostavte svoju hru / kompiláciu do samostatnej aplikácie

Keď ste postavili niečo, na čo ste hrdí (alebo ste ukončili klonovanie nášho trochu riskantného príkladu pre prax), je čas presuňte svoju hru z editora a urobte z nej niečo, čo môžete uverejňovať na internete a prinútite svojich priateľov a rodinu hrať. Aby ste to mohli urobiť, budete si musieť vytvoriť samostatnú aplikáciu. Dobrá správa je, že v jednote je to veľmi, veľmi ľahké. Existuje však niekoľko potenciálnych šikanov, ktoré si budete chcieť dať pozor.

Pre začiatočníkov vedzte, že môžete vytvoriť iba bezchybný projekt. Za týmto účelom sa uistite, že máte konzolu otvorenú pri vytváraní: existujú nejaké chybové podmienky, ktoré bude hra ignorovať v editore, ale pokus o zostavenie bude stále prerušený. Tým sa vypíšu iba chybové správy do konzoly bez viditeľných výsledkov na obrazovke, čo môže byť frustrujúce, ak zabudnete skontrolovať. Akonáhle budete mať svoju hru zostavovať bez chýb, môžete si vybrať Zostavte nastavenia pod súbor alebo stlačte ctrl > smena
> B. Zobrazí sa jednoduchý dialóg, ktorý vám umožní zostaviť hru pre niekoľko platforiem.

Programovanie hry s jednotou: Programová hra jednoty pre začiatočníkov 17

Postup odtiaľ je samovysvetľujúci: vyberte svoje možnosti a stlačte build; hra vás vyzve, aby ste nainštalovali adresár a umiestnili tam spustiteľný aj dátový adresár. Tieto dva súbory je možné komprimovať a distribuovať spolu (stačí sa uistiť, že neúčtujete poplatok za hru zabudovanú v demo jednote, pretože to porušuje podmienky poskytovania služby).

10. Záverečné poznámky

Ako pri každom nástroji na vývoj hier, kľúčom k úspechu s jednotou je iteratívny vývoj. Musíte stavať v zvládnuteľných krokoch - byť ambiciózni, všetkými prostriedkami, ale byť ambiciózni v malých kúskoch a zariadiť tieto kúsky také, že aj keď nedosiahnete svoju konečnú ambíciu, aspoň skončíš koherentným produktu.

Najdôležitejšie prvky získajte najskôr: majte na pamäti nejaký nápad minimálny životaschopný produkt, najjednoduchšia, najbeznejšia vec, ktorú by ste mohli vytvoriť, a napriek tomu sa cítite, akoby ste dosiahli niečo, čo stojí za to. Dostaňte sa na tento minimálny realizovateľný projekt skôr, ako prejdete na väčšie ambície.

Tento tutoriál vám poskytuje silné východiskové miesto, ale najlepší spôsob, ako sa naučiť jednotu, je vytvorenie hry. Začnite s tvorbou hry, vyplňte medzery vo svojich vedomostiach, keď sa objavia, a postupný tok vedomostí rýchlo vymaže to, čo nepoznáte prekvapivo.

Ak ste si toto všetko prečítali a ste trochu ohromení kódovaním vyžadovaným v službe Unity, nezabudnite vyskúšať, ako naučte sa vývoj hier pomocou Unity Learn Unity Learn je najjednoduchší spôsob, ako zvládnuť vývoj hierChcete začať rozvíjať svoje vlastné hry? Unity Learn je najlepší a najjednoduchší spôsob, ako sa naučiť a osvojiť si to, čo potrebujete vedieť. Čítaj viac a tiež si prečítajte nášho sprievodcu ako vytvárať videohry bez programovania Ako si vyrobiť videohry bez programovaniaChcete si vytvoriť videohru, ale nemôžete kódovať? Potom použite stavebnicu pre videohry, ktorá vám umožní vytvárať hry bez potreby kódovania! Čítaj viac .

Jednota je mocný nástroj a s trochou prieskumu môžete vytvárať pôsobivé projekty rýchlejšie, ako by ste očakávali. Dajte nám vedieť, čo ste vytvorili v komentároch nižšie - radi by sme vás videli!

Andrej, spisovateľ a novinár so sídlom na juhozápade, má zaručenú funkčnosť do 50 stupňov Celzia a je vodotesný do hĺbky 12 stôp.