Стрелять
Урок 9 из 25 курса Игра на Unity: Tower Defense на Coddy.
Башня стреляет Projectile по цели. Снаряд летит к ней с помощью MoveTowards, следуя за целью, пока та движется, и наносит ей урон при попадании. Ему не нужно знать, что он попал во врага: он запрашивает IDamageable — интерфейс для всего, что может получать урон, поэтому можно стрелять по любому объекту, который его реализует.
Цель может погибнуть, пока снаряд находится в полёте. Уничтоженный объект Unity при сравнении равен null, поэтому снаряд сначала проверяет target == null и уничтожает себя.
Пока что башня стреляет раз в секунду. Она хранит время следующего выстрела:
if (Time.time >= nextShot)
{
Fire();
nextShot = Time.time + 1f;
}Задание
СреднеБашни стреляют стрелами раз в секунду.
EnemyреализуетIDamageable:TakeDamage(int amount)уменьшает значениеhealth, а при значении 0 или меньше уничтожает врага.Projectile:Launch(Transform target, int damage)сохраняет оба значения;Updateлетит к цели со скоростьюspeed, по прибытии вызывает у неёTakeDamage(damage)и уничтожает себя, а также уничтожает себя, если цель исчезла.Tower: добавьpublic int damage = 2;и[SerializeField] private Projectile projectilePrefab;; стреляй, как описано выше, изtransform.position + Vector3.up.
Нажми «Играть»: стрелы полетят, а Grunts будут падать. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
// Появится позже: снаряд, летящий от башни к цели.
public class Projectile : MonoBehaviour
{
}
Все уроки раздела Игра на Unity: Tower Defense
Потренируйтесь самостоятельно: Песочница Unity