Menu
CoddyTech

Итог: пул пуль

Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 40 из 50.

challenge icon

Задание

Средне

Практика стрельбы. Стрелки перемещают Tank влево и вправо (готово), а у двух красных мишеней есть скрипт Target с методом Hit() (готово). Сделай так, чтобы танк стрелял пулями из пула:

  • В Tank.cs создай ObjectPool<Bullet>, который создаёт пули из bulletPrefab, включает их при получении из пула и выключает при возврате, уничтожает пули, которые пул больше не хранит, и оставляет не более 4 запасных пуль.
  • Пробел извлекает пулю из пула и запускает её на расстоянии 1 единицы перед танком.
  • В Bullet.cs пуля летит вперёд (+z) со скоростью speed (15). При столкновении с объектом со скриптом Target (коллайдер пули настроен как триггер) она вызывает у цели Hit() и сразу возвращается в пул. Если пуля ни во что не попала, она возвращается в пул через life (1) секунду.
  • При каждом выстреле пуля получает полный срок жизни, в том числе при повторном использовании, и возвращается в пул один раз за выстрел.

Нажми Play, выстрели в обе мишени, затем нажми Check.

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

using UnityEngine;
using UnityEngine.Pool;

public class Bullet : MonoBehaviour
{
    public float speed = 15f;
    public float life = 1f;

    // Лети вперёд; возвращайся в пул при попадании в Target или по истечении life секунд
}

Все уроки раздела Архитектура игр в Unity