Menu
CoddyTech

Strzelaj

Lekcja 9 z 25 w kursie Gra w Unity: Obrona wieży w Coddy.

Wieża wystrzeliwuje pocisk w swój cel. Pocisk leci do niego za pomocą MoveTowards, podążając za celem, gdy ten się porusza, i zadaje mu obrażenia po dotarciu na miejsce. Nie musi wiedzieć, że trafił w przeciwnika: pyta o IDamageable, czyli interfejs dla wszystkiego, co może otrzymywać obrażenia, więc można strzelać do wszystkiego, co go implementuje.

Cel może zginąć, gdy pocisk jest w locie. Zniszczony obiekt Unity jest równy null, więc pocisk najpierw sprawdza target == null i sam się niszczy.

Na razie wieża strzela raz na sekundę. Przechowuje czas następnego strzału:

if (Time.time >= nextShot)
{
    Fire();
    nextShot = Time.time + 1f;
}
challenge icon

Wyzwanie

Średni

Wieże strzelają strzałami raz na sekundę.

  1. Enemy implementuje IDamageable: TakeDamage(int amount) odejmuje tę wartość od health, niszcząc przeciwnika, gdy wartość wynosi 0 lub mniej.
  2. Projectile: Launch(Transform target, int damage) przechowuje obie wartości; Update leci do celu z prędkością speed, po dotarciu wywołuje TakeDamage(damage) i niszczy pocisk, także wtedy, gdy cel zniknie.
  3. Tower: dodaj public int damage = 2; oraz [SerializeField] private Projectile projectilePrefab;; strzelaj jak wyżej z pozycji transform.position + Vector3.up.

Naciśnij „Graj”: strzały polecą, a Gruntowie padną. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

// Pojawi się później: pocisk lecący z wieży do celu.
public class Projectile : MonoBehaviour
{
}

Wszystkie lekcje w sekcji Gra w Unity: Obrona wieży

Poćwicz samodzielnie: Edytor online Unity