Zadaj obrażenia wszystkim
Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 43 z 50.
Wyzwanie
ŚredniTeraz walka działa w obie strony. Zachowaj wszystko z wcześniejszych lekcji. Wrogowie nie są już oznaczani tagami: zamiast tego zamach znajduje za pomocą interfejsu to, co może zranić, a wrogowie ranią bohatera za pomocą tego samego interfejsu.
IDamageabledeklaruje jedną metodę:void TakeDamage(int amount);.Enemyimplementuje ten interfejs. Ma wartościhealth,damageiattackEvery, ustawiane w Inspectorze (grunt ma wartości 2, 1 i 1; dasher — 1, 2 i 1).TakeDamageodejmujeamountodhealthi niszczy wroga, gdy wartość spadnie do 0 lub poniżej. WStartprzechowuj równieżIDamageablebohatera. W każdej klatce, gdy bohater znajduje się w odległości 1.2 jednostki, wywołuj jegoTakeDamage(damage), najwyżej raz na każdeattackEverysekund.Heroimplementuje ten interfejs; wartościswingDamage(1),maxHealth(5) isafeTime(1) ustaw w Inspectorze, ahealthustaw namaxHealthwAwake. Trafienie odejmujeamount, zapisuje zdrowie w logu jakoHero HP: 4i chroni bohatera przed kolejnymi trafieniami przezsafeTimesekund. Przy zdrowiu równym 0 zapisz w loguThe hero fallsi wyłącz skrypt Hero (enabled = false). Powalony bohater ignoruje trafienia.- Zamach nie sprawdza już tagów ani niczego nie niszczy: wywołuje
TakeDamage(swingDamage)na każdym obiekcie będącym w zasięgu i przed bohaterem, który ma komponentIDamageable.
Naciśnij Play i walcz, a następnie kliknij Check.
Spróbuj swoich sił
// W jednej z późniejszych lekcji uzupełnimy ten interfejs: wszystko, co może odnieść obrażenia.
public interface IDamageable
{
}
Wszystkie lekcje w sekcji Architektura gier w Unity
1Komponenty, nie hierarchie
Małe komponentyPodstawowy skrypt przeciwnikaKomponenty abstrakcyjneWspółpracujące komponentyPodsumowanie: modułowa wieżyczka4Dane serializowane
Klasy serializowalneListy w InspectorzeWyliczenia w InspectorzePodsumowanie: tabela łupów10Projekt: Arena przetrwania
BohaterTypy wrogów2Interfejsy w Unity
IDamageableInterfejsy i TryGetComponentGetComponentsPodsumowanie: klawisz interakcji5ScriptableObjects
Zasoby danychStatystyki broniWspółdzielone ustawieniaFale jako danePowtórka: baza danych przedmiotów8Kod wielokrotnego użytku
Metody rozszerzająceGeneryczny singletonGeneryczne metody pomocniczePodsumowanie: FindNearest