Menu
CoddyTech

Zadaj obrażenia wszystkim

Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 43 z 50.

challenge icon

Wyzwanie

Średni

Teraz 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.

  • IDamageable deklaruje jedną metodę: void TakeDamage(int amount);.
  • Enemy implementuje ten interfejs. Ma wartości health, damage i attackEvery, ustawiane w Inspectorze (grunt ma wartości 2, 1 i 1; dasher — 1, 2 i 1). TakeDamage odejmuje amount od health i niszczy wroga, gdy wartość spadnie do 0 lub poniżej. W Start przechowuj również IDamageable bohatera. W każdej klatce, gdy bohater znajduje się w odległości 1.2 jednostki, wywołuj jego TakeDamage(damage), najwyżej raz na każde attackEvery sekund.
  • Hero implementuje ten interfejs; wartości swingDamage (1), maxHealth (5) i safeTime (1) ustaw w Inspectorze, a health ustaw na maxHealth w Awake. Trafienie odejmuje amount, zapisuje zdrowie w logu jako Hero HP: 4 i chroni bohatera przed kolejnymi trafieniami przez safeTime sekund. Przy zdrowiu równym 0 zapisz w logu The hero falls i 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 komponent IDamageable.

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