18# 1942 Classic 5.

Naším cílem v této lekci bude udělat vlnu nepřátel, kdy všichni budou postupně sledovat stejnou trasu.

Aby jsme mohli vytvořit úspěšně vlny nepřátel musíme dát dohromady 4 scripty, které dohromady vytvoří funkční vlny nepřátel. První část již máme hotovou, enemy sleduje trasu. Ještě musíme udělat Spawner, script, který bude postupně skládat nepřátele na do hry. Také musíme udělat script pro zbytek vlastností nepřítele (životy, střelba, přidání skóre a nějaký zvuk smrti. To cele bude spojovat samotná vlna, která vezme cestu, spawner, typ nepřítele a rychlost jak je spawnovat a vytvoří samotnou vlnu. Chápu že to zní komplikovaně, ale ve výsledku to nebude tak náročné, když to budeme vytvářet postupně.

V Assets si vytvoříme nový script, pomocí kterého budeme dělat jednotlivé soubory pro vlny. Něco podobného jsme již dělali u textové adventury. Důležitá připomínka, když vytváříte script, rovnou ho pojmenujte jinak jej musíte přejmenovávat i uvnitř scriptu a je to zbytečně komplikované. My si ho pojmenujeme WaveConfig a otevřeme si ho ve Visual Studiu.

První co uděláme změníme “MonoBehavior” na “ScriptableObject”. a zároveň si uděláme položku menu s názvem Enemy Wave Confing.

Uložíme a v unity ověříme, že máme novou položku pod pravým tlačítkem.

Nevytváříme a přepneme se zpět do Visual Studia. Smažeme void Start a Update protože ty v configu potřebovat nebudeme. Místo toho si vytvoříme hromadu proměnných a všechny jako serializovaná pole.

Jako poslední musíme udělat způsob jak tyto data využít a proto vytvoříme pro každé pole veřejnou metodu, která bude vracet hodnotu uloženou v proměnné.

Nyní máme z velké části hotovo. Jen nás čeká pár úprav. Když se koukneme do Unity, nikde nevyužíváme přímo Path, ale využíváme její elementy Waypoints. Aby jsme nemuseli pak v další scriptech opakovaně separovat z Path jednotlivé Waypoints můžeme to udělat rovnou zde v WaveConfig.

Můžeme si to přidat jako další funkci, i když tím pádem nebudeme potřebovat funkci GetPathPrefab(), ale to nevadí. opět se bude jednat o veřejnou funkci, který bude vracet List tvořený z pozic (transform) s názvem GetWaypoints().

Opět máme červeně podtrženo, protože zatím nevracíme hodnotu. Budeme chtít vracet waveWayPoints. To si můžeme předepsat a také si tu proměnnou můžeme založit s tím, že si do ni uložíme nový prázdný list na proměnné Transform.

Máme vytvořený prázdný seznam a vracíme seznam. Ještě by chtělo do něj něco napsat. Seznamy (List) se plní postupně a navíc dopředu nevíme kolik prvků má trasa nepřítele. Proto použijeme smyčku. Jednu jsme již použili při střelbě (While), která běží tak dlouho dokud podmínka platí. Nyní dopředu víme kolikrát chceme, aby smyčka proběhla (tolikrát kolik máme bodů na cestě). V takovém případě můžeme použít smyčku “Foreach” – Pro každý. Body na cestě už bude náročnější. V unity máme nakládané body (Waypoints) pod cestu (Path).

Takovému uspořádání se říká Parent a Child / Rodič a dítě. Aby jsme získali počet waypoints, stačí se zeptat rodiče (Path), kolik má dětí (Waypoints). Hledáme Transform child v Path Transform.

Plnění již není tak náročné, vezmeme List waveWaypoints a přidáme (add) do něj child.

Uložíme a za chvíli budeme mít možnost vyzkoušet jestli vše funguje, ale napřed musíme udělat pár úprav v Enemy. Ten totiž funguje zatím podle cesty, kterou jsme mu pevně vytvořili přiřazením bodů. My ale chceme,  aby si bral waveWaypoints přes funkci GetrWaypoints z configu. Proto přidáme do enemy serializované pole pomocí kterého budeme připojovat confing a zrušíme serializované pole pro List Waypoints.

Nyní máme prázdnou proměnou waypoints, kterou jsme dřív plnili ručně. Tu naplníme z configu v Start().

Uložíme a přepneme do Unity. De jen budeme propojovat a vytvářet. Začneme novou složkou Waves. Do ni budeme ukládat konfigurace jednotlivých vln, které budeme vytvářet.

Ve složce Waves si vytvoříme Wave 01 (Pravé tlačítko -> Create -> Enemy Wave Config.) Ten vyžaduje PathPrefab. Ten ještě neexistuje a rovnou si můžeme udělat nějaký rozumný, kdy nám nepřátelé budou vycházet ze strany obrazovky, na druhou stranu a zase zpět, kde budou mizet. Můžeme upravovat Path (0), kdy jen přesuneme a upravíme/přidáme body.

Z cesty pak uděláme Prefab – Přetáhneme Path (0) a s ní všechny waypoints do Assets – Prefabs. Nyní můžeme naplnit nastavení Wave 01 (Máme ve složce Waves).

Ještě nemáme Spawner a tak cestu připojíme k Enemy Prefab (Assets – Prefabs – Enemy).

Nyní by mělo vše fungovat a po zapnutí by měl náš Enemy opsat cestu, kterou jsme mu udělali a na konci by se měl zničit.

Výborně. V příští lekci uděláme Spawner a necháme trasu proběhnout víc nepřátel.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Share This