Menu
CoddyTech

Создание объектов по таймеру

Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 49 из 67.

Спавнеру, который создаёт что-то каждые несколько секунд, нужен таймер. Time.deltaTime — это время, которое занял последний кадр, поэтому, если прибавлять его к полю в каждом Update(), получится количество прошедших секунд. Когда сумма достигает интервала, создайте объект и вычтите интервал из суммы.

Этот фонтан выбрасывает каплю воды каждые полсекунды:

public GameObject dropPrefab;
public float interval = 0.5f;
float timer;

void Update()
{
    timer += Time.deltaTime;
    if (timer >= interval)
    {
        Instantiate(dropPrefab, transform.position, Quaternion.identity);
        timer -= interval;
    }
}

timer -= interval сохраняет остаток: если кадр завершился на отметке 0.51 секунды, следующие полсекунды отсчитываются от 0.01, и капли появляются точно в такт. timer = 0 отбросит этот остаток, поэтому каждая капля будет появляться немного позже, и задержка будет накапливаться в течение долгой игры. timer — приватная переменная, потому что никому не нужно задавать её в Inspector.

challenge icon

Задание

Средне

Dropper должен сбрасывать коробку каждые interval секунд (в Inspector указано 2): первую коробку — через 2 секунды после нажатия Play, затем ещё по одной каждые 2 секунды.

  • Создавай каждую коробку в позиции сбрасывателя, без поворота.
  • После каждой коробки выводи её номер: Box 1, Box 2 и так далее.

Нажми Play и наблюдай, как растёт стопка, затем нажми Check.

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

using UnityEngine;

public class BoxDropper : MonoBehaviour
{
    public GameObject boxPrefab;
    public float interval = 1f;

    void Update()
    {
        // Каждые interval секунд: создавайте ящик и выводите в журнал "Box 1", "Box 2"...
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы скриптинга в Unity