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.
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.
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).
A nastavení generátoru:
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.
Teď už jen přiřadíme prefab s efektem výbuchu do proměnné deathSplash, spustíme, a je hotovo!
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