Menu
CoddyTech

Стрелять

Урок 9 из 25 курса Игра на Unity: Tower Defense на Coddy.

Башня стреляет Projectile по цели. Снаряд летит к ней с помощью MoveTowards, следуя за целью, пока та движется, и наносит ей урон при попадании. Ему не нужно знать, что он попал во врага: он запрашивает IDamageable — интерфейс для всего, что может получать урон, поэтому можно стрелять по любому объекту, который его реализует.

Цель может погибнуть, пока снаряд находится в полёте. Уничтоженный объект Unity при сравнении равен null, поэтому снаряд сначала проверяет target == null и уничтожает себя.

Пока что башня стреляет раз в секунду. Она хранит время следующего выстрела:

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

Задание

Средне

Башни стреляют стрелами раз в секунду.

  1. Enemy реализует IDamageable: TakeDamage(int amount) уменьшает значение health, а при значении 0 или меньше уничтожает врага.
  2. Projectile: Launch(Transform target, int damage) сохраняет оба значения; Update летит к цели со скоростью speed, по прибытии вызывает у неё TakeDamage(damage) и уничтожает себя, а также уничтожает себя, если цель исчезла.
  3. Tower: добавь public int damage = 2; и [SerializeField] private Projectile projectilePrefab;; стреляй, как описано выше, из transform.position + Vector3.up.

Нажми «Играть»: стрелы полетят, а Grunts будут падать. Затем нажми «Проверить».

Попробуйте сами

using UnityEngine;

// Появится позже: снаряд, летящий от башни к цели.
public class Projectile : MonoBehaviour
{
}

Все уроки раздела Игра на Unity: Tower Defense

Потренируйтесь самостоятельно: Песочница Unity