reklama

Překvapivým rysem internetové ekonomiky je nárůst indie videoher. Jakmile byla exkluzivní doména tisíciletí, multimilionová studia triple-A, byla vyvinuta řada sad nástrojů, které přinést moderní prostředky pro vývoj her do rukou jednotlivců nebo malých ad-hoc sbírek programátorů a designérů. Již jsme diskutovali o nejlepší indie hry 10 indických her tak dobře, zapomenete, že jsou indie vůbecMohou však nastat situace, kdy budete chtít něco jiného než nezávislá norma. Hra, která sleduje hodnoty indie, ale je vyrobena s kvalitou, o které jsou známy hry AAA nejvyšší úrovně. Tituly jako ... Přečtěte si více , proto se ujistěte, že jste se na ně podívali, abyste získali inspiraci v tom, co lze dosáhnout pomocí nástrojů, jako je Unity.

Tato příručka je k dispozici ke stažení jako PDF zdarma. Stáhněte si programování hry s jednotou: Průvodce pro začátečníky. Neváhejte jej zkopírovat a sdílet se svými přáteli a rodinou.

Tyto nezávislé týmy pro vývoj her prokázaly pohyblivost a toleranci rizik, která jim v mnoha případech umožňuje tlačit inovace hry rychleji, než jejich velké rozpočtové protějšky. V posledních letech měla premiéru řada šokujících úspěšných nezávislých titulů, včetně

Minecraft, Předpeklí, a Super masový kluk, a dokonce i když nemusíte dělat takovéto hry dovednosti, můžete vytvořit hru pomocí Buildboxu Jak si vyrobit videohru za týden pomocí BuildboxuExistuje program, který usnadňuje vývoj her i těm, kteří nemají absolutně žádné zkušenosti s tvorbou videoher. Říká se tomu Buildbox. Zde je důvod, proč byste to měli vyzkoušet. Přečtěte si více .

V rychle se rozvíjejícím prostředí vývoje nezávislé hry Jednota se objevil jako něco de facto standardu: díky nízké ceně, snadnosti použití a široké sadě funkcí je ideální pro rychlý vývoj her. Jednota je tak flexibilní, že můžete dokonce vytvořte si vlastní herní ovladače Jak si vyrobit vlastní herní ovladač s Arduino a jednotouUž jste někdy chtěli navrhnout svůj vlastní herní ovladač? Je to snazší, než si myslíte! Přečtěte si více s trochou DIY know how!

Dokonce i velká studia jako CCP (Developers of Eva online) použít pro rychlé prototypování herních konceptů. Unity poskytuje „herní engine v krabici“ - fyzický a renderovací engine s háčky pro několik skriptovacích jazyků, přizpůsobitelný prakticky jakémukoli žánru videohry.

Zatímco Unity poskytuje vizuální editor pro manipulaci s herním prostředím, Unity není nástrojem pro tvorbu her s „nulovým programováním“. Vyžaduje, abyste programovali, abyste dosáhli výsledků, ale také vám poskytne mnohem flexibilnější a výkonnější nástroj, než by jakýkoli program „tvůrce her“ mohl.

Jednota za vás práci neudělá, ale podstatně snižuje překážku vstupu. Počínaje úplně od nuly s C ++ a OpenGL, může trvat několik dní, než se dostane k bodu, kde je skutečně něco vykresleno na obrazovce. Pomocí Unity to trvá asi deset sekund. Jednota vkládá základní prvky tvorby her do rukou začínajících programátorů rychlým a intuitivním způsobem.

Dnes vás provádím ve všem, co potřebujete vědět, abyste mohli vytvořit hru v Unity, která je rozdělena do deseti hlavních kapitol:

§1 - Verze jednoty

§2 - Instalace jednotky

§3 - Stručný úvod do objektově orientovaného paradigmatu

§4 - Základy jednoty

§5 - Příklad: Základní prvky hry

§6 - Skriptování v jednotě

§7 - Příklad: Skriptovací tenis

§8 - Prozkoumání dokumentace / dozvědět se více

§9 - Sestavování vaší hry / kompilace do samostatné aplikace

§10 - Závěrečné poznámky

1. Verze jednoty

Unity má dvě základní varianty: pro verzi a verzi zdarma. Existují počet rozdílů, ale obecně řečeno, pro verze podporuje řadu vizuálních vylepšení (jako jsou měkké stíny v reálném čase a následné zpracování) a velké množství relativně malých funkcí, které jsou pro složitější velmi užitečné hry.

To znamená, že pro většinu relativně jednoduchých her, které byste mohli chtít postavit, je bezplatná verze Unity naprosto dostačující. Níže popíšeme klíčové rozdíly níže pro zájemce.

1.1 Stanovení ceny

Bezplatná verze Unity je samozřejmě zdarma. Existuje však několik omezení: bezplatná verze Unity nemůže být licencována na žádnou společnost s ročním příjmem vyšším než $100,000. I když takové organizace přesahují rámec této příručky, pokud máte podezření, že byste se takovou organizací mohli stát, je pravděpodobně moudré na jaře pro verzi Pro.

Pro verze Unity je $75 měsíc, nebo $1500 pro trvalou licenci, a nemá žádná omezení, co můžete dělat s hrami vytvořenými s ní. K dispozici je také 30denní bezplatná zkušební verze, kterou budeme v této příručce používat, abychom vám poskytli co nejúplnější přehled dostupných funkcí. Rovněž je k dispozici jednoletá studentská licence Studica pro $129.

1.2 Funkce

Ve svobodné verzi Unity chybí mnoho funkcí. Nejdůležitější rozdíly jsou však následující: bezplatná verze Unity postrádá řadu možností vykreslování, které umožňují lépe vypadající a rychlejší hry (podpora LOD, následné zpracování na obrazovce, pokročilé shadery, měkké stíny v reálném čase a odložené vykreslování). To také postrádá plné mechanim animační systém, a některé nástroje AI.

Obecně platí, že pro komplexní, rozsáhlé projekty nebo projekty, kde je důležitý grafický výkon, je pro verze vhodná. Používám pro verzi, protože vyvíjím hry virtuální reality pro Windows Oculus Rift Oculus Rift RecenzeVirtuální realita není nová, ale je to konečně cenově dostupné av našem chápání. Po čtyřech letech a dvou vývojových prototypech dorazilo konečné spotřebitelské vydání modelu Oculus Rift. Přečtěte si více a podpora post-processingu na obrazovce je nutná pro správnou interakci s headsetem.

2. Instalace Unity

Jednotka se snadno instaluje. Spustitelný soubor si můžete stáhnout z unity3d.com/get-unity/download.

Po stažení spusťte a postupujte podle pokynů instalačního programu. Po dokončení instalace se zobrazí okno s názvem „aktivovat licenci Unity“. Zaškrtněte políčko „aktivovat 30denní zkušební verzi Unity Pro“ a poté „OK“.

Gratulujeme! Nyní máte 30denní zkušební verzi Unity Pro. Po vypršení zkušební doby, pokud si nepřejete zakoupit profesionální verzi, můžete přepnout na bezplatnou verzi a ponechat stávající obsah.

3. Stručný úvod do objektově orientovaného paradigmatu

Než začneme s Unity, je důležité, abychom si trochu prošli základy. Jednota podporuje oba C# a JavaScript pro programování her 7 jazyků pro jednotný vývoj her, které je třeba se naučit: Který je nejlepší?Chcete začít s vývojem her v Unity? Budete potřebovat znalost jednoho z těchto jazyků kompatibilních s jednotou. Přečtěte si více ; budeme pracovat s C # pro tento tutoriál.

Zaprvé, pokud jste ještě nikdy nenaprogramovali, odložte tento tutoriál a strávte několik dní prací prostřednictvím Microsoft C # Language Primer dokud se nebudete cítit pohodlně používat jazyk pro jednoduché úkoly.

Pokud byste chtěli něco trochu jiného než C # (ale ne nutně jazyk, který můžete v Unity použít), podívejte se na našeho průvodce šest nejjednodušších programovacích jazyků pro začátečníky 6 nejjednodušších programovacích jazyků pro začátečníkyNaučit se programovat je o nalezení správného jazyka stejně jako o procesu editace. Zde je prvních šest nejjednodušších programovacích jazyků pro začátečníky. Přečtěte si více .

Pokud jste již dříve programovali v imperativním nebo objektově orientovaném jazyce, jako je C nebo Java, obraťte se na základní nápovědu a seznamte se s tím, jak se C # liší od jiných jazyků, které jste používali v minulosti. V obou případech nepokračujte v tutoriálu, dokud se nebudete cítit pohodlně při řešení jednoduchých problémů s C # (například pokud bych se měl zeptat Pokud chcete napsat program, který vytiskne prvních sto prvočísel, měli byste být schopni tento program napsat bez konzultace Google).

Nejdůležitější koncept, kterému je třeba porozumět, je objektově orientované paradigma Odkud pochází „objektově orientované“ programování?Objektově orientovaný není jen náhodný bzučák, který slyšíte v programovacích kruzích. Za jménem je důvod - ale co? Připojte se ke mně, když prozkoumám některé základy programovacích konceptů a vysvětlím ... Přečtěte si více (zkráceně jako OOP). V objektově orientovaných jazycích se programy dělí na funkční jednotky nazývané Objekty. Každý objekt má své vlastní soukromé proměnné a funkce. Jsou volány funkce specifické pro objekt metody.

Myšlenka je modularita: tím, že každý objekt je izolován a nutí další objekty, aby s ním interagovaly jeho metodami můžete snížit počet možných neúmyslných interakcí - a rozšířením hmyz. Můžete také vytvářet objekty, které můžete později znovu použít, aniž by došlo k úpravám. V Unity tyto objekty budujete a připojujete k nim herní entity (jehož chování budou ovládat).

Objekty jsou vytvořeny z třídy: třída je pouze soubor, který stanoví definici vašeho objektu. Takže, pokud chcete Mook předmět, který zpracovává AI pro nepřítele ve vaší hře, napíšete třídu „Mook“ a potom připojíte tento soubor ke každé nepřátelské entitě. Při spuštění hry bude každý nepřítel vybaven kopií objektu „Mook“.

Připevnění nového skriptu k objektu vypadá takto:

Programování hry s jednotou: Programová hra jednoty pro začátečníky 1

První, vyberte objekt a jít do Inspektor. Klikněte na Přidat komponentu knoflík.

Programování hry s jednotou: Programová hra jednoty pro začátečníky 2

Jít do nový skript, zadejte požadované jméno a klikněte na vytvořit a přidat.

Programování hry s jednotou: Programová hra jednoty pro začátečníky 3

Nyní máte nový skript, který můžete upravit dvojitým kliknutím na něj!

Soubor třídy vypadá takto:

pomocí UnityEngine; veřejná třída Mook: MonoBehaviour {private float health; void Start () {health = 100; } void Update () {if (health> 0) {/ * Vyhledejte hráče, pokud narazíte na hráče na silnici, zabijte ho, pokud vás zastřelí, odstraňte náhodné množství zdraví * /}} }

Pojďme to rozebrat:

  • Používání UnityEngine: Tento řádek říká C #, že chceme používat knihovny Unity, které nám umožňují připojit se k hernímu enginu Unity.
  • Veřejná třída Mook: MonoBehaviour:Tento řádek deklaruje třídu a její jméno - Mook.
  • Soukromé zdraví plavat: Tím se deklaruje proměnná soukromé třídy (kterou lze změnit pouze zevnitř třídy). Proměnná má hodnotu v Start.
  • Void Start (): Tím se deklaruje metoda nazvaná Start. Start je speciální metoda, která se spustí pouze jednou, když se hra zpočátku spustí.
  • Void Update (): Aktualizace je další speciální metoda, která běží na každém snímku. Většina vaší logiky hry půjde sem.
  • // Pokud narazíte na hráče na cestě, zabijte ho: Tento řádek je komentář (jakýkoli řádek začínající dvojitým lomítkem je ignorován C #). Komentáře se používají k připomenutí toho, co konkrétní kousky kódu dělají. V tomto případě se tento komentář používá k zastoupení komplikovanějšího bloku kódu, který ve skutečnosti dělá to, co komentář popisuje.

Spolu s Start a Aktualizace, můžete si vytvořit vlastní metody s téměř jakýmkoli jménem. Metody, které vytvoříte, se však nebudou spouštět, pokud nebudou zavolány. Pojďme deklarovat metodu nazvanou hypotetická třída addTwoNumbers který sčítá dvě čísla dohromady:

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

Toto deklaruje veřejnou (přístupnou pro jiné objekty) metodu, která vrací float, nazvaný addTwoNumbers, který bere jako vstup dvě plováky (nazývané A a b). Poté vrátí součet obou hodnot jako svůj výstup.

Volání této metody zv rámci stejné třídy (řekněme zevnitř Aktualizace) vypadá takto:

float result = addTwoNumbers (1, 2);

Volání metody z jiné třídy je podobné:

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

To opět vytvoří instanci naší třídy, zpřístupní příslušnou metodu a přidá jí čísla, která chceme přidat, a výsledek uloží do výsledek. Jednoduchý.

Pokud je váš skript připojen k objektu, který má speciální vlastnosti (jako je emitor částic), ke kterému nelze přistupovat v rámci normální sady parametrů GameObject si můžete vybrat, že se s ní bude zacházet jako s jiným druhem herní entity GetComponent metoda.

Syntaxe vypadá takto:

GetComponent().Hrát si();

Pokud vám něco z toho není známo, vraťte se a projděte primerem C #. Když budeme pokračovat, ušetří vám to spoustu frustrace.

4. Základy jednoty

V této sekci se budeme zabývat základní mechanikou motoru Unity. Pracovní postup v Unity jde takto:

  1. Vytvořte entitu, která bude hrát roli ve hře (prázdné GameObjects lze použít pro abstraktní logické úkoly).
  2. Napište nebo najděte soubor třídy a přidejte jej do entity jako skript (pomocí Přidat komponentu tlačítko v inspektor Pohled.
  3. Běh > test > ladit > opakovat dokud to nefunguje a přejděte k dalšímu prvku hry.

Jednota přichází s řadou základních karet zobrazení, které lze rozložit různými způsoby podle chuti uživatele. Těch pět je:

  1. Hra: zobrazí běžící instanci hry, se kterou můžete komunikovat a testovat.
  2. Scéna: poskytuje statickou, upravitelnou verzi herní svět.
  3. Inspektor: umožňuje upravovat jednotlivé entity ve hře výběrem v editor tab.
  4. Projekt: umožňuje procházet soubory projektu a přetahovat modely, materiály a další zdroje do editor kartu umístit do herního světa.
  5. Hierarchie: Tato karta zobrazuje všechny objekty na světě, což vám umožňuje najít vzdálené objekty ve scéně a nadřazené entity navzájem kliknutím a přetažením.

Na obrázku níže najdete umístění všech těchto věcí:

Programování hry s jednotou: Programová hra jednoty pro začátečníky 0

4.1 Jednotné entity

4.1.1 Sítě

OK je cesta 3D geometrie je zastoupena v jednotě. Můžete použít vestavěnou jednotku Unity primitivní objekty (kostky, koule, válce atd.) nebo importujte své vlastní 3D modely z modelovacího balíčku, jako je Mixér Začínáme s Blenderem: 7 fantastických výukových programů pro nováčky3D modelování je skvělý způsob, jak procvičit kreativitu při zachování kontaktu s vaší technickou stránkou. Zde jsou některé úžasné bezplatné návody. Přečtěte si více nebo Mayo Učení Maya 2016: Kde začítMaya je nástroj používaný pro 3D animaci, ale přichází s neuvěřitelně strmou křivkou učení. Jaký dobrý výukový materiál existuje? Přečtěte si více . Unity podporuje celou řadu 3D formátů, včetně .fbx, a .3ds.

Základními nástroji pro manipulaci s mřížkami jsou tlačítka pro změnu měřítka, otočení a posun v levém horním rohu rozhraní. Tato tlačítka přidávají ovládací prvky k modelům v editoru, které pak lze použít k manipulaci s nimi ve vesmíru. Chcete-li změnit vlastnosti textury nebo fyziky objektu, vyberte je a použijte inspektor pohled analyzovat materiál a rigidbody elementy.

4.1.2 Prvky GUI

Tradiční skryty GUI a text lze zobrazit pomocí GUI Text a GUI Textura GameObjects v editoru. Robustnějším a realističtějším způsobem manipulace s prvky uživatelského rozhraní je však použití 3D text a Quad GameObjects (s průhlednými texturami a neosvětleným průhledným shaderem) umisťující prvky HUD do herního světa jako entity.

V hierarchie Z pohledu herních prvků lze tyto prvky hry přetáhnout na hlavní kameru, aby se z nich stali děti, což zajistí, že se budou pohybovat a otáčet s kamerou.

Prvky grafického uživatelského rozhraní (text a textury) lze upravit pomocí příslušných polí na kartě inspektora.

4.1.3 Materiály

Materiály jsou kombinace textur a shadery Bylo vysvětleno pět důležitých počítačových herních podmínekPokud hrajete hru na konzoli, jsou technické podrobnosti zpracovány za vás. Někteří hráči to dávají přednost, ale hráči PC si často užívají větší míru kontroly nad okem hry ... Přečtěte si více , a lze je přetáhnout přímo na herní objekty z karty projektu. Unity Pro přichází s velkým počtem shaderů a texturu, která je k nim připojena, můžete upravit pomocí karty inspektora pro objekt, na který jsou aplikovány.

Chcete-li importovat texturu, převeďte ji na .jpg, .png, nebo .bmpa přetáhněte ji do aktiva v adresáři projektu Unity project (který se objeví v adresáři Moje dokumenty ve výchozím stavu). Po několika sekundách se v editoru zobrazí zátěžová lišta. Po dokončení budete moci najít obrázek jako texturu pod projekt tab.

4.1.5 Světla

Světla jsou GameObjects které promítají svět na svět. Pokud ve vaší scéně nejsou žádná světla, jsou všechny polygony vykresleny na stejné úrovni jasu, což světu poskytuje plochý, vybledlý vzhled.

Světla lze umístit, otočit a mít několik vnitřních charakteristik, které si můžete přizpůsobit. intenzita jezdec ovládá jas světla a rozsah řídí, jak rychle to mizí.

Pokyny v scénický pohled ukázat maximální rozsah osvětlení. Hrajte s oběma nastaveními, abyste dosáhli požadovaného účinku. Můžete také upravit barvu světla, vzor (cookie na povrchu je světlo namířeno a na jaký druh světlice se při pohledu přímo na světlo objeví na obrazovce. Soubor cookie lze použít k předstírání realističtějších světelných vzorů, k vytváření dramatických falešných stínů a simulaci projektorů.

Tři hlavní druhy světla jsou bod, směřovat, a směrový.

Bodová světla mít umístění v 3D prostoru a promítat světlo pouze v jednom směru v kuželu s proměnným úhlem. Jsou vhodné pro baterky, světlomety a obecně vám poskytují přesnější ovládání osvětlení. Bodová světla mohou vrhat stíny.

Bodová světla mít umístění v 3D prostoru a rovnoměrně vrhat světlo ve všech směrech. Bodová světla nevrhají stíny.

Směrová světlaNakonec se používají k simulaci slunečního světla: vyčnívají světlo ve směru, jako by z nekonečně daleko. Směrová světla ovlivňují každý objekt ve scéně a mohou vytvářet stíny.

4.1.6 Částicové systémy

A Systém částic je GameObject který vytváří a řídí stovky nebo tisíce částic současně. Částice jsou malé, optimalizované 2D objekty zobrazené ve 3D prostoru. Částicové systémy používají zjednodušené vykreslování a fyziku, ale mohou zobrazovat tisíce entit v reálném čase bez koktání, díky čemuž jsou ideální pro kouř, oheň, déšť, jiskry, magické efekty a další.

Existuje mnoho parametrů, které můžete vyladit pro dosažení těchto efektů, a můžete k nim přistupovat vytvořením částicového systému pod editor komponent > výběr systému částic > otevření karty inspektora. Můžete změnit velikost, rychlost, směr, rotaci, barvu a texturu každé částice a nastavit většinu těchto parametrů tak, aby se časem také měnila.

Pod kolize atribut, pokud jej povolíte a nastavíte simulační prostor na svět dostanete částice, které se srazí s předměty na světě, které lze použít pro řadu realistických účinků částic, včetně deště, tekoucí vody a jisker.

5. Příklad: Základní prvky hry

Pro tento tutoriál si uděláme jednoduchou hru Pong - něco, co jsme již několikrát zahrnovali v DIY:

  • Arduino Classic Pong Jak znovu vytvořit klasickou tenisovou hru pomocí ArduinoPong byl vůbec první videoher, která dosáhla masového trhu. Poprvé v historii byl koncept „videohry“ přinesen do rodinného domu díky Atari 2600 -... Přečtěte si více
  • Arduino OLED Pong Arduino Retro hry s OLED displejemPřemýšleli jste někdy nad tím, kolik práce vyžaduje psaní vlastních retro her? Jak snadné je Pong kódovat Arduino? Přečtěte si více

V této části se podíváme na aranžování základních prvků - skriptovací výuka přijde později.

Nejprve rozdělme hru Pong na její základní komponenty. Nejprve potřebujeme dvě pádla a míč. Míč letí mimo obrazovku, takže budeme chtít, aby byl mechanismus resetován. Chceme také, aby text zobrazoval aktuální skóre, a abychom vám ukázali všechny základní prvky Unity, budeme chtít efektní částečný efekt, když zasáhnete míč. Celá hra bude muset být dramaticky osvětlena.

To se rozpadá na míčový objekt (koule), plodit, dvě lopatkové rekvizity s emise částic připojeno, 3D textová entita, a bodové světlo. Pro tento tutoriál použijeme výchozí fyzický materiál odskočit, s odrazit kombinovat nastaven na násobit. Takto vypadá nastavení v deseti snímcích obrazovky:

Programování hry s jednotou: Programová hra jednoty pro začátečníky 4
Programování hry s jednotou: Programová hra jednoty pro začátečníky 5

Nejprve vytvořte kostka prop pro pádlo.

Programování hry s jednotou: Programová hra jednoty pro začátečníky 6

Upravte to správně, duplikujte to, a dal koule mezi lopatkami pro míč.

Programování hry s jednotou: Programová hra jednoty pro začátečníky 7

Poté vytvořte 3DText objekt a stupnice a pozice to správně, měnící se velikost písma atribut k získání méně pixelovaného obrázku.

Programování hry s jednotou: Programová hra jednoty pro začátečníky 8

Dále vytvořte dva částicové systémy, vyberte požadované vlastnosti a připojte je k pádlům.

Programování hry s jednotou: Programová hra jednoty pro začátečníky 9
Programování hry s jednotou: Programová hra jednoty pro začátečníky 10

Dále budete chtít polohu a otočte fotoaparátem aby správně zarámoval scénu. Když je fotoaparát vybrán, v pravém dolním rohu můžete vidět malý náhled pohledu kamery.

Programování hry s jednotou: Programová hra jednoty pro začátečníky 11

Než skončíme, musíme si vytvořit dvě další kostky, které budou nárazníky, abychom zabránili tomu, aby se míč odrazil z hrací plochy. Můžeme je zviditelnit zrušením zaškrtnutí síťový renderer v karta inspektora.

Programování hry s jednotou: Programová hra jednoty pro začátečníky 13
Programování hry s jednotou: Programová hra jednoty pro začátečníky 14

Pokud zasáhnete hru, můžete nyní vidět základní prvky naší hry. Zatím nic nedělají, ale dostaneme se k tomu!

Programování hry s jednotou: Programová hra jednoty pro začátečníky 12

Nyní, když máme toto nastavení, budeme hovořit o tom, co se podílí na skriptování těchto prvků, aby se hra.

6. Skriptování v jednotě

Jakmile je k objektu připojen skript, můžete jej revidovat dvojitým kliknutím na něj v okně inspektor. Otevře se MonoDevelop, výchozí vývojové prostředí pro Unity. Monodevelop je v podstatě textový editor s funkcemi specificky optimalizovanými pro programování.

Klíčová slova a komentáře jsou zvýrazněny v modrý a zelenýa číselné hodnoty a řetězce se objeví v Červené. Pokud jste použili Zatmění nebo jiných IDE, MonoDevelop je velmi podobný. Můžeš stavět skripty z editoru, abyste zkontrolovali chyby syntaxe, například:

Programování hry s jednotou: Programová hra jednoty pro začátečníky 15

Obecně platí, že chcete-li, aby váš skript spolupracoval s jednotou, musíte odkazovat na prvky, které má objekt, který skript obsahuje (seznam těchto prvků je uveden pod inspektor když je vybrán příslušný objekt). Poté můžete zavolat metody nebo nastavit proměnné pro každý z těchto prvků, abyste provedli požadované změny.

Pokud chcete, aby skript na objektu ovlivňoval vlastnosti jiného objektu, můžete vytvořit prázdný GameObject ve vašem skriptu a použijte inspektor přiřadit jej jinému objektu ve scéně.

Seznam prvků, které může mít objekt, je následující (převzato z pohledu inspektora jedné z našich pádel ve výše uvedeném příkladu):

  1. Přeměnit
  2. Kostka (síťový filtr)
  3. Box Collider
  4. Mesh Renderer

Každý z těchto aspektů objektu lze ovlivnit skriptem. Dále se podíváme přesně na to, jak.

6.1 Transformace

Funkce transformace pro GameObject v Unity řídí fyzické parametry tohoto objektu: jeho stupnice, své pozice, a jeho orientace. Můžete k nim přistupovat ze skriptu, jako je tento:

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

Ve výše uvedených příkladech jsou pojmenované proměnné typů specifikovaných v názvech. Zde je několik klíčových podrobností: pozice a měřítko jsou, jak byste očekávali, uloženi jako Vector3s. Můžete přistupovat k internetu X, Y, a Z komponenty každého (například transform.position.y udává vzdálenost objektu nad nulovou rovinou).

Nicméně, vyhnout se kardanový zámek, rotace jsou zpracovávány jako Quaternions (vektory se čtyřmi složkami). Protože kvaterniony pro ruční manipulaci jsou neintuitivní, můžete manipulovat s rotacemi pomocí eulerovských úhlů pomocí Čtveřice. Euler metoda takto:

transform.rotation = Quaternion. Euler (smola, vybočení, svitek);

Pokud si přejete hladce pohybovat objekty z jednoho místa na druhé, najdete Slerp metoda pro quaternions a vector3s užitečná. Slerp bere tři argumenty - aktuální stav, konečný stav a rychlost změny a hladce interpoluje mezi nimi při dané rychlosti. Syntaxe vypadá takto:

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

6.2 Renderer

Funkce rendereru v Unity vám umožňují řídit způsob vykreslování povrchů rekvizit na obrazovce. Můžete změnit přiřazení textury, změnit barvu a změnit shader a viditelnost objektu. Syntaxe vypadá takto:

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

Většina z nich má docela jasné funkce. První příklad dělá dotyčný objekt neviditelným: užitečný trik v řadě situací. Druhý příklad přiřadí nový Barva RGB (konkrétně zelené) k předmětnému předmětu. Třetí přiřadí hlavní rozptýlenou texturu nové proměnné Texture. Poslední příklad mění shader materiálu objektu na nově definovanou proměnnou shaderu.

6.3 Fyzika

Unity přichází s integrovaným fyzickým motorem - něco takového fyzika pískoviště hry Smash, Drive & Build: 3 úžasné fyzikální simulátory karantény Přečtěte si více veškeré použití. To vám umožní přiřadit fyzické vlastnosti objektů a nechat za vás zpracovat podrobnosti jejich simulace. Obecně platí, že namísto pokusu o implementaci vlastní fyziky pomocí učebnice a transformačního systému je použití fyzického motoru Unity v co největší míře jednodušší a robustnější.

Všechny fyzikální rekvizity vyžadují srážky. Samotnou skutečnou simulaci však zpracovává a rigidbody, které lze přidat do inspektor Pohled. Pevné disky mohou být kinematický nebo nekinematický.

Kinematické fyzikální rekvizity se srazí s (a efektními) nekinatickými fyzikálními rekvizity kolem nich, ale nejsou ovlivněny samotnou srážkou. Statické kinematické rekvizity jsou příslovečné nepohyblivé objekty a pohybující se kinematické objekty jsou příslovečná nezastavitelná síla (pro záznam, když se srazí, jednoduše projdou každou jiný).

Kromě toho můžete upravit úhlový tah objektu (kolik energie potřebuje k jeho rotaci), změnit jeho hmotnost, diktovat, zda je či není ovlivněn gravitací, a aplikovat na něj síly.

Příklady:

rigidbody.angularDrag = 0,1f; rigidbody.mass = 100; rigidbody.isKinematic = false; rigidbody.useGravity = true; rigidbody. AddForce (transformace vpřed * 100);

To vše je docela samozřejmé. Jediná věc, kterou si zde poznamenat, je použití transformovat dopředu. Všechny Vector3 mají tři komponenty (.vpřed, .nahoru, a .že jo) s nimi spojené, k nimž lze přistupovat a otáčet se s nimi (vpřed je směr modré šipky v editoru). transformovat dopředu klíčové slovo je jednoduše dopředný vektor pro aktuální objekt s velikostí 1. To může být násobeno plovákem vytvořit více síly na objekt. Můžete také odkazovat transform.up a transform.right, a negujte je, abyste získali jejich obraty.

6.4 Kolize

Při sestavování hry byste často chtěli, aby srážka vedla k nějaké změně stavu v kódu, a to nejen za fyzickou simulaci. K tomu budete potřebovat metoda detekce kolizí.

K detekci kolizí v jednotě je zapotřebí určité přípravné práce. Nejprve musí alespoň jeden z objektů v kolizi a ne-kinematická rigidbody připojeno k tomu. Oba objekty musí mít správné srážky, nastavené tak, aby nebyly spouštěče. Celková rychlost obou objektů musí být dostatečně nízká, aby se skutečně srazily, místo aby se jednoduše přeskakovaly.

Pokud jste se o vše postarali, můžete zkontrolovat kolizi umístěním speciální metody detekce kolizí do skriptu připojeného k objektu, se kterým chcete kolizi zkontrolovat. Metoda bude vypadat takto:

void OnCollisionEnter (Collision other) {// dělat zde věci. }

Tato metoda se automaticky spustí během prvního snímku, kdy se jiný objekt dotkne vašeho objektu. Kolizní entita jiný je odkaz na objekt, který jste zasáhli. Můžete například odkazovat na jeho gameobject, rigidbody, a přeměnit vlastnosti, které s ní manipulují různými způsoby. Zatímco OnCollisionEnter je pravděpodobně nejběžnější funkce, kterou budete používat, můžete také použít OnCollisionExit a OnCollisionStay (s jinak shodnou syntaxí a použitím), které se aktivují během prvního snímku, který přestane srážet s objektem, a během každého snímku, který srazí s objektem.

Někdy může být také užitečné dělat to, co se říká raycasting. V raycasting, nekonečně tenká čára (a paprsek) je seslána světem z nějakého původu, podél nějakého vektoru, a když něco zasáhne, je vrácena poloha a další podrobnosti o první srážce. Kód pro raycast vypadá takto:

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

To vrhá paprsek z pozice aktuálního objektu podél -Vector3.up (přímo dolů) a propojuje proměnnou udeřil k prvnímu objektu, s nímž se srazí. Jakmile váš paprsek něco zasáhne, máte přístup hit.distance - určit, jak daleko je, nebo - udeřil. GameObject manipulovat s zasaženým objektem.

Raycasty, jako je tento, mohou být použity pro střelce k určení, na co zbraň směřuje, nebo k výběru objektů, když se na ně fotoaparát dívá, nebo pro určité styly mechaniky pohybu.

6.5 Časová korekce

Důležitým faktorem, který byste měli mít na paměti, když manipulujete s objekty tímto způsobem, musí mít co do činění snímková frekvence. Bez ohledu na to, jak pečlivě optimalizujete, snímkové frekvence se budou vždy lišit a nechcete, aby se vaše rychlost hry odpovídajícím způsobem měnila. Pokud někdo spustí hru na rychlejším počítači, než na kterém jste ji vyvinuli, nechcete, aby hra probíhala dvojnásobnou rychlostí.

Způsob, jak to napravíte, je vynásobením hodnot, které používáte, časem potřebným k vykreslení posledního snímku. To se provádí pomocí Time.deltaTime. Tím se účinně mění rychlost jakékoli proměnné, ze které každý přírůstek zvyšuje změna na snímek na změna za sekundua pravděpodobně byste měli tuto změnu provést na jakékoli hodnotě, kterou zvyšujete nebo snižujete každý snímek.

6.6 Zdroje zvuku a posluchači

Nyní, když jsme se zabývali tím, jak vytvářet, vykreslovat a ovládat objekty, pojďme mluvit o jiném smyslu, který mohou počítačové hry sloužit: zvuk. Unity podporuje dva druhy zvuků: 2D a 3D zvuky. 3D zvuky mění svůj objem podle vzdálenosti a deformují se, když se pohybují vzhledem k fotoaparátu; 2D zvuky ne.

2D zvuky jsou vhodné pro hlasové přenosy a hudbu na pozadí a 3D zvuky se vztahují na zvuky generované událostmi na světě. Chcete-li změnit, zda je zvuk 3D, vyberte jej v poli projekt pohled, přepněte na inspektor zobrazte a vyberte příslušnou možnost z rozbalovací nabídky a poté stiskněte tlačítko znovu importovat knoflík.

Abyste mohli zvuk skutečně přehrávat, musíte připojit audiosource na podpěru (podpěra, ze které má zvuk pocházet, v případě 3D zvuku). Pak budete muset otevřít audioklip a vyberte svůj zvukový soubor.

Můžeš použít myAudioSource. Pauza() a myAudioSource. Hrát si() ovládat tyto zvukové soubory. Můžete upravit chování při falloffu, hlasitost a dopplerovské řazení zvuků pod inspektor karta pro zdroj audiosource.

6.7 Vstup

Hra, která nepřijímá žádný vstup od uživatele, není moc hrou. Existuje mnoho různých druhů vstupů, které si můžete přečíst, a téměř všechny z nich jsou přístupné přes Vstup a KeyCode objekty. Níže jsou uvedeny některé ukázkové vstupní příkazy (jejichž hodnoty byly vyhodnoceny v každém rámci).

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

Funkce těchto řádků jsou většinou samy vysvětlující. Pomocí těchto tří druhů vstupních referencí můžete rekonstruovat řídicí schémata nejmodernějších 3D počítačových her.

6.8 Ladění skriptu

Řekněme, že skript nefunguje. Jak říká dobrý lékař, může se vám stát, že vám dojde. Pokud se na vašem C # vyskytnou přímé chyby v syntaxi, hra se obvykle odmítne spustit, když zasáhnete hru, a pokud jste stavět skripty z editoru. Viz. níže:

Programování hry s jednotou: Programová hra jednoty pro začátečníky 16

Tyto chyby obvykle nejsou nejobtížnější opravit. Problematičtější jsou drobné sémantické chyby, ve kterých jste úspěšně napsali soubor plný platných C # - jen ne ten, který by udělal to, co jste si mysleli. Pokud máte některou z těchto chyb a máte potíže s jejím sledováním, můžete zkusit situaci vylepšit několika způsoby.

Prvním je pozastavení provádění hry a kontrola konzoly. Můžete hru pozastavit kliknutím na ikonu pauza v horní střední části editoru a poté vyberte řídicí panel ze spodní části okno menu (nebo stisknutím Ctrl > Posun > C). I když neexistují žádné chyby, varování mohou stále pomoci poskytnout nějaké vodítko, co by se mohlo pokazit.

Pokud to nefunguje, můžete také zkusit získat představu o stavu skriptu vytištěním stavu interních proměnných a ověřit, zda program dělá to, co si myslíte, že dělá. Můžeš použít Ladit. Protokol (String) pro vytištění obsahu řetězce na konzoli, když provádění programu zasáhne tento řádek. Obecně platí, že pokud pracujete pozpátku od toho, co si myslíte, že by se mělo odehrávat skrze věci, které by měly být aby se to stalo, nakonec dosáhnete bodu, kde vaše ladicí tisky nedělají to, co od nich očekáváte dělat. Tam je vaše chyba.

7. Příklad: Skriptovací tenis

Abychom mohli postavit Pong, rozdělme hru na její základní prvky: potřebujeme kouli, která ricochets tam a zpět mezi pádly při zvyšování rychlost, potřebujeme tabulku, která ví, kdy míče prošly pádly, a potřebujeme mechanismus pro restartování míče, když se děje. Dobrým prvním krokem by bylo přidání ne-kinematické rigidody do míče, dvě kinematické rigidody do pádla, deaktivujte gravitaci pro všechny z nich a ze standardních aktiv přiřaďte vhodný fyzický materiál (odskočit s odrazit kombinovat nastaven na násobit).

Níže si můžete prohlédnout skript pro míč s vysvětlujícími poznámkami. Míč musí splnit některé základní cíle: měl by se odrazit ve složitém vzoru, vždy udržovat pohyb na obou osách a měl by se zrychlovat v náročném, ale ne nemožném tempu v horizontále směr.

BallHandler.cs

Dále musíme skriptovat naše pádlo, které si můžete prohlédnout níže. Pádlo se musí pohybovat nahoru a dolů v reakci na stisknutí kláves (ale ne mimo určité hranice). Musí také spustit systém částic, když se s něčím srazí.

PaddleHandler.cs

Dále potřebujeme nepřátelskou umělou inteligenci: něco, co způsobí, že nepřátelské pádlo bude sledovat směr míče pevnou rychlostí. K tomu použijeme Vector3.Slerp pro maximální jednoduchost. Chtěli bychom také stejné chování částic, jaké vidíme na vlastním pádle.

EnemyAI.cs

Nakonec potřebujeme skript pro aktualizaci výsledkové tabulky a resetování míče, když to překročí hranice.

ScoreboardUpdater.cs

S připojenými skripty a vyplněnými odkazy, když spustíme naši hru Pong, zažíváme hratelnost!

Programování hry s jednotou: Programová hra jednoty pro začátečníky 18

Můžeš stáhnout moje demo Pong, pokud byste chtěli vidět vše, co jsem nastínil v akci. Běží na systémech Windows, Mac a Linux.

8. Zkoumání dokumentace / dozvědět se více

Unity je složitý motor s mnoha dalšími funkcemi, než by bylo možné v průvodci tímto stylem realizovat. a to je před tím, než začnete používat širokou škálu (bezplatných a komerčních) rozšíření Unity dostupných na internetu Internet. Tato příručka vám poskytne silné výchozí místo pro vývoj hry, ale sebevzdělávání je důležitou dovedností v každém úsilí a zdvojnásobení zde.

Klíčovým zdrojem je zde Unity ScriptReference. ScriptReference je prohledávatelná databáze, která je k dispozici pro C # i Javascript, který obsahuje seznam všech příkazů a funkcí Jednoty, s popisy jejich funkcí a stručnými příklady syntax.

Pokud máte potíže s editorem a rozhraním Unity, nebo máte rádi videonávody, je zde dlouhý seznam vysoce kvalitních Unity video tutoriály Nejlepší jednotná 3D výuka pro začátečníkyChcete vyvíjet hry s Unity, ale nevíte, kde začít? Vyzkoušejte jeden z těchto úžasných výukových programů Unity 3D ještě dnes. Přečtěte si více dostupný. Rozsáhlejší (ale méně široký) textové návody pro Unity jsou také k dispozici od CatLikeCoding.

A konečně, pokud máte otázky nad rámec dokumentace nebo výukových programů, můžete položit konkrétní otázky na odpovědi. Unity3d.com. Nezapomeňte, že odpovědi jsou poskytovány dobrovolníky, proto respektujte jejich čas a nejprve prohledejte databázi, abyste se ujistili, že na vaši otázku již nebyla zodpovězena.

9. Sestavte svou hru / kompilaci do samostatné aplikace

Když jste postavili něco, na co jste hrdí (nebo jste ukončili klonování našeho poněkud riskantního příkladu pro cvičení), je čas na přesuňte svou hru z editoru a proměňte ji v něco, co můžete zveřejnit na internetu a donutit své přátele a rodinu hrát si. Chcete-li to provést, budete muset vytvořit samostatnou aplikaci. Dobrou zprávou je, že v jednotě je to velmi, velmi snadné. Existuje však několik potenciálních šeků, na které byste si měli dát pozor.

Pro začátek víme, že můžete vytvořit pouze bezchybný projekt. Za tímto účelem se ujistěte, že máte při sestavování otevřenou konzolu: Existují některé chybové podmínky, které bude hra v editoru ignorovat, ale pokus o sestavení bude stále přerušen. Tím se vypíší pouze chybové zprávy do konzoly bez viditelných výsledků na obrazovce, což může být frustrující, pokud zapomenete zkontrolovat. Jakmile však bude vaše hra kompilace bez chyb, můžete si vybrat Sestavení nastavení pod Soubor nebo stiskněte Ctrl > Posun
> B. Zobrazí se jednoduchý dialog, který vám umožní sestavit hru pro několik platforem.

Programování hry s jednotou: Programová hra jednoty pro začátečníky 17

Proces odtud je vysvětlující: vyberte své možnosti a stiskněte stavět; hra vás vyzve k instalaci adresáře a umístí tam spustitelný i datový adresář. Tyto dva soubory lze zkomprimovat a distribuovat (pouze se ujistěte, že vám neúčtujeme poplatky za hru zabudovanou v demo Unity, protože to porušuje smluvní podmínky).

10. Závěrečné poznámky

Stejně jako u jakéhokoli nástroje pro vývoj her je klíčem k úspěchu v Unity iterativní vývoj. Musíte stavět v zvládnutelných přírůstcích - být ambiciózní, všemi prostředky, ale být ambiciózní v malých kouscích a uspořádat ty kusy takové, že i když nedosáhnete své maximální ctižádosti, alespoň skončíš uceleným produkt.

Nejdůležitější prvky získejte nejprve: mějte na paměti svůj nápad minimální životaschopný produkt, nejjednodušší, nejbezpodnější věc, kterou byste mohli vytvořit, a stále se cítíte, jako byste dosáhli něčeho, co stojí za to. Dostaňte se k tomuto minimálnímu životaschopnému projektu, než se přesunete k větším ambicím.

Tento tutoriál vám dává silné výchozí místo, ale nejlepší způsob, jak se naučit jednotu, je postavit hru. Začněte s budováním hry, vyplňte mezery ve svých znalostech, jakmile se objeví, a postupný tok znalostí eroduje věci, které neznáte překvapivě rychle.

Pokud jste si toto vše přečetli a jste trochu ohromeni kódováním vyžadovaným v Unity, nezapomeňte vyzkoušet, jak Naučte se vývoj hry s Unity Learn Unity Learn je nejjednodušší způsob, jak zvládnout vývoj herChcete začít rozvíjet své vlastní hry? Unity Learn je nejlepší a nejjednodušší způsob, jak se učit a ovládat to, co potřebujete vědět. Přečtěte si více a také si přečtěte našeho průvodce jak si vyrobit videohry bez programování Jak si vyrobit videohry bez programováníChcete si udělat videohru, ale nemůžete kódovat? Pak použijte stavebnici pro videohry, která vám umožní vytvářet hry bez nutnosti kódování! Přečtěte si více .

Unity je mocný nástroj a s trochou průzkumu můžete stavět působivé projekty rychleji, než byste čekali. Dejte nám vědět, co jste vytvořili v komentářích níže - rádi bychom vás viděli!

Andrej je spisovatelem a novinářem se sídlem na jihozápadě, přičemž je zaručeno, že zůstane funkční až do 50 stupňů Celcius, a je vodotěsný do hloubky dvanácti stop.