23# 1942 Classic 10.

V dnešní lekci uděláme třídu, která se bude starat o DMG (zranění). Postupně ji napojíme na střely hráče, na střely nepřátel a hlavně na nepřátele (když narazí do hráče). Začneme vytvořením C# scriptu s názvem DMG. Otevřeme ho ve Visual Studiu a založíme si proměnnou na základní damage a zároveň funkci, kterou budeme hodnotu damage vracet.

Také si uděláme funkci Hit, která bude pouze ničit objekt, který ji zavolá.

Nyní máme vytvořený nějaký základní script, ještě není hotový, ale můžeme ho umístit na první místo, kde bude určitě potřeba a to Laser Projectile. Uložíme, otevřeme si Unity a tam v Assets -> Prefabs, připojíme k Laser Projectile nový komponent (Add Component) -> DMG.

Zatím efekt =0. Lépe řečeno žádná změna. Ještě totiž musíme mít někde životy. Proto si vytvoříme další script, Enemy. Již máme EnemyPath a EnemySpawner, takže to bude 3 třída k Enemy. Rovnou si ji otevřeme.

První proměnná budou životy health a pro jistotu jako Float, protože do budoucna, když uděláte nějakou “speciální schopnost” co sníží nepřátelské životy na polovinu nebo něco podobného, je lepší počítat i s desetinným místem.

Pro samotné volání funkce GetDamage použijeme funkci OnTriggerEnter2D, který jsme již používali předtím v BlockBreakeru. Kdy si napřed uložíme cestu k GetDamage a poté odečteme od životů zranění z GetDamage.

Nyní testování v Unity. Napřed si k Enemy prefab přidáme Enemy script (Add Component -> Enemy). Jako druhý bod mu ještě musíme přidat Collider. Můžete udělat polygon collider a detailně obkreslit nepřítele nebo jen udělat kruh uvnitř něj. Snažte se udělat hit box spíš menší než větší než nepřítel, protože v budoucnu nechceme aby hráč dostával DMG za to, že se přiblížil k nepříteli, ale až když do něj skutečně nabourá. Jako třetí bod si dáme do scény jednoho nepřítele na testování a můžeme si vypnout na chvíli smyčku aby jsme neměli na scéně moc nepřátel při testování (Nastavení je v Enemy Spawner). Poslední co musíme udělat je v prefabs upravit LaserProjectile, kdy v RigidBody2D zapneme Trigger. A máme hotovo… Alespoň odečítání životů od nepřátel. Zatím je to nezničí, ale v inspektoru vidíme jak jim jdou životy do mínusu.

Přepneme se zpět do Visual Studia a uděláme, aby nepřítel co má 0 životů se zničil. To samozřejmě bude součástí OnTiggerEnter2D, kde pokud (if) budou životy menší nebo rovno 0 (health <= 0) zničíme nepřítele (Destroy(gameObject).

Uložíme a testujeme.

V dalším díle začnou střílet i nepřátelé.

 

 

 

 

 

0 Comments

Submit a Comment

Your email address will not be published.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Share This