01. Editor a projekt
V nasledujúcich lekciách vyrobíme našu prvú jednoduchú hru: stolný minigolf. Lebo ak existuje stolný tenis, prečo by nemohol stolný minigolf, že?
Vytvorme si nový projekt a nazvime ho MojaHra. Privíta nás okno editora s prázdnym novým projektom. Farebne som vyznačil najdôležitejšie súčasti editora, ktoré si teraz prejdeme.

Scéna
Toto je 3D pohľad na game objekty v našej hre. Zatiaľ máme v scéne len kameru a svetlo, ale to časom zmeníme. Scéna sa správa podobne ako iné 3D editory, vyskúšajte si pohyb v scéne pomocou myši:
- Koliesko – zoom
- Stredné tlačidlo (resp. stlačenie kolieska) – posúvanie
- Pravé tlačidlo – lietanie v scéne. Pohyb myšou otáča pohľad, klávesy WSAD posúvajú pohľad dopredu, dozadu, doľava a doprava.
- Alt + Ľavé tlačidlo – rotovanie okolo bodu v strede okna.
Hierarchia
V paneli Hierarchy sa nachádzajú všetky game objekty, ktoré máme v scéne. V scéne sa zobrazujú v 3D priestore. V hierarchii sa zobrazujú v zozname pod sebou. Každá vec, ktorú chceme, aby ju bolo vo výsledku vidno alebo aby niečo v hre robila, musí byť umiestnená v scéne/hierarchii. Zatiaľ tam máme iba objekty Main Camera a Directional Light.
Vytvorme teraz v scéne nový objekt. Buď cez hlavné menu:
GameObject > 3D Object > Plane alebo pravým klikom do hierarchie. Všimnite si aj, aké ostatné 3D objekty sa dajú vytvárať.

V scéne sa objavila štvorcová plocha a do hierarchie pribudol game objekt Plane.
Inšpektor a komponenty
V paneli s názvom Inspector sa nachádzajú vlastnosti game objektu, ktorý máme práve označený. Označme si kliknutím v hierarchii našu novú plochu zvanú Plane a pozrime, čo je v inšpektore.
V prvom riadku vidíme, že naša plocha má meno Plane. Toto môžeme rovno zmeniť, premenujme ju cez inšpektor na Stol.


- Pomenovať si game objekty podľa seba je užitočný návyk. Pomáha to zorientovať sa v projekte.
- Objekty možno ľahko premenovať aj v hierarchii pomocou klávesy F2.
V inšpektore sú pod sebou bloky s rôznymi vlastnosťami, tu napríklad Transform, Plane (Mesh Filter), Mesh Renderer atď. Tieto bloky sa nazývajú komponenty. Komponent pridáva game objektu rôzne schopnosti a vlastnosti. Pomocou komponentov budeme game objekty učiť nové veci a časom budeme vyrábať aj vlastné komponenty.
Komponent Transform definuje, kde v priestore sa game objekt nachádza (Position), ako je otočený (Rotation) a aký je veľký (Scale). Rôzne game objekty majú rôzne komponenty, ale Transform majú povinne všetky game objekty
Zmeňte teraz v komponente Transform vlastnosti game objektu Stol tak, aby bol umiestnený v strede scény (pozícia 0,0,0) a aby bol 2x širší a 2x dlhší.
Projekt a assety
Už vieme, že v projekte máme v scéne game objekty a že ich správanie a vlastnosti sú uložené v komponentoch. Poslednou súčasťou projektu sú dáta ako obrázky, 3D modely, textúry a materiály, zvuky, skripty… Pre tieto dáta máme jednotný názov assety a nájdeme ich v rámci panelu s názvom Project.
Panel s assetmi je v našom projekte zatiaľ takmer prázdny, obsahuje iba adresár s názvom Scenes:

Assety majú adresárovú štruktúru ako súbory na disku. Lebo to aj sú súbory na disku. Keď kliknete pravým tlačítkom myši do panelu s assetmi a vyberiete voľbu Show in explorer, otvorí sa adresár s projektom.
My teraz prefarbíme stôl na zeleno. Na to budeme potrebovať vytvoriť nový materiál. Najprv ale vytvorme v hlavnom adresári assetov podadresár pre materiály cez hlavné menu: Assets > Create > Folder.
Nový adresár pomenujme Materials a rovno do neho aj vlezme.
V adresári Materials vytvorme nový asset typu Material: Assets > Create > Material.
Nový materiál pomenujme StolMat. Takto by to malo vyzerať:

Označme si tento materiál a pozrime do inšpektora, kde sú jeho vlastnosti a zmeňme vlastnosť Albedo na zelenú.


Inšpektor neukazuje len vlastnosti game objektov ale aj vlastnosti assetov.
Aj keď sme už zmenili materiál na zelený, stôl v scéne zostáva biely. Prečo? Pretože zatiaľ náš zelený materiál existuje len medzi assetmi a nie je priradený žiadnemu game objektu v scéne. Kým je asset len v projekte, ale nie je nijako priradený do scény, tak nič vo výsledku nerobí.
Priraďme materiál StolMat game objektu Stol. Najjednoduchšie je to tak, že material myšou pretiahneme z assetov priamo na game objekt v scéne.

Import assetov
Aby náš stôl nebol fádne zelený, pridáme mu textúru. Začnime tým, že si stiahnete súbor s textúrou:
Tento súbor následne naimportujte do assetov, najlepšie do nášho adresára Materials. Je na to viac spôsobov. Použite ktorý chcete:
- Pretiahnuť ho myšou do panelu s assetmi v Unity okne.
- Skopírovať ho do adresára Assets/Materials v adresári projektu
- Pravý klik do panelu s assetmi > Import new asset …
- Hlavné menu > Assets > Import new asset …
- Pri sťahovaní súboru ho uložiť priamo do adresára Assets/Materials v adresári projektu
Takto by to malo vyzerať po importe:

Keď si teraz označíme v assetoch materiál StolMat, môžeme do jeho vlastností v Inšpektore pretiahnuť textúru noise, do prázdneho štvorčeka v položke Albedo:

Náš stôl hneď vyzerá trochu inak:

Game objekty, komponenty, assety
Vyskúšali sme si základnú prácu s tromi zložkami Unity projektu.
Každý Unity projekt pozostáva z game objektov. Každú vec umiestnenú v scéne nazývame game objekt a môžu to byť viditeľné veci (postavičky, krajina, …) aj neviditeľné veci (zdroj zvuku, kamera, svetlo, … )
To, čo ktorý game objekt robí, je určené tým, aké komponenty má na sebe. Svetlo má napríklad komponent Light, ktorý definuje jeho svetelné vlastnosti. (Skúste si označiť svetlo v našej scéne a meňte mu Color.)
Dátové súčasti projektu, ako je napríklad textúra, materiál, zvuky alebo skripty sa v Unity nazývajú assety. Existujú nezávisle na game objektoch a kým ich na nejaký game objekt neumiestnime, tak nerobia nič.
Dokončite sami
- Objavte, ako vytvoriť guľu v Unity. Vyrobte niekde nad stolom loptičku na minigolf.
- Vyrobte zo 4 kvádrov obrubu na stôl a nastavte im materiál s drevenou textúrou.
(Klonovať game objekty sa dá cez Edit > Duplicate alebo CTRL-D) - Po dokončení si uložte svoju scénu
(File > Save, alebo CTRL-S)

Tu je na stiahnutie hotový projekt po dokončení tejto lekcie: MojaHra_01.zip
