Unity 3D: obrana proti hordám nepřátel a částicové efekty
26.08.2020
Unity 3D: obrana proti hordám nepřátel a částicové efekty

V této části Unity tutoriálu si ukážeme, jak se lze bránit proti hordám nepřátel pomocí telekineze, kterou jsme si naprogramovali minule, a vyzkoušíme si částicové efekty.

unity obrana

Nejprve musíme přidat kolizní box na nepřátelský model, abychom mohli detekovat kolize s hozenou kostkou. Na prefab "Enemy" tedy přidáme Capsule Collider a nastavíme ho jako Trigger (Is Trigger). To zajistí, že hráč ani hozený projektil nebude používat fyziku při kolizi. Kolizní box tak bude sloužit čistě pro detekci nárazu. A jelikož ho vkládáme do tzv. prefabu, aplikuje se následně na všechny vygenerované nepřátele. 

 capsule unity

Pro efekt "smrti" nepřítele vytvoříme nový Particle Effect. Parametry jsem nastavil přibližně tak, aby efekt evokoval výbuch krve v rámci low-poly grafiky. Na obrázku níže je přesné nastavení, particle efekty často vyžadují chvilku nastavování, než se přiblížíme ke kýženému výsledku. V tomto efektu jde hlavně o Start Color (nastavení barvy), Emission (ovládání generátoru), Shape (tvar vysílání částic) a Collision (nastavení fyzikální kolize s okolím). 

 kolize

A nastavení generátoru:

deathboom 

Po jeho vytvoření ho opět přetáhneme do Assets, stejně jako předchozí objekty, aby se z něj také stal prefab. Bude ho pak možné hromadně generovat a dále používat bez nutnosti hledat objekt ve scéně.

Ve skriptu Enemy.cs, který jsme tvořili v předminulém dílu, vytvoříme novou proměnnou deathSplash, která bude držet referenci na prefab s výbuchem krve. Přidáme metodu OnTriggerEnter, která se používá pro detekci začátku kolize s jiným objektem. V moment kolize detekujeme, zda objekt, který s nepřítelem koliduje, má dostatečnou rychlost (tzn. zda hráč hodil krabici s dostatečnou silou, aby mohl "zranit" nepřítele). Pokud tomu tak je, zničíme objekt nepřítele a na jeho pozici vytvoříme instanci objektu deathSplash.

 5deathsplash.png

Teď už jen přiřadíme prefab s efektem výbuchu do proměnné deathSplash, spustíme, a je hotovo!

 6enemy.png

 

Doufám, že jste si ničení nepřátel užili. Pro kompletní kód této části tutoriálu navštivte můj github. V dalším díle vylepšíme grafiku hry.


Jan Jileček