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;
}Wyzwanie
ŚredniWieże strzelają strzałami raz na sekundę.
EnemyimplementujeIDamageable:TakeDamage(int amount)odejmuje tę wartość odhealth, niszcząc przeciwnika, gdy wartość wynosi 0 lub mniej.Projectile:Launch(Transform target, int damage)przechowuje obie wartości;Updateleci do celu z prędkościąspeed, po dotarciu wywołujeTakeDamage(damage)i niszczy pocisk, także wtedy, gdy cel zniknie.Tower: dodajpublic int damage = 2;oraz[SerializeField] private Projectile projectilePrefab;; strzelaj jak wyżej z pozycjitransform.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