Додавання денного та нічного циклу в Unity

Цикл дня і ночі — це динамічна система, яка імітує плин часу в ігровому світі. Ця функція може значно посилити занурення та реалістичність гри, впливаючи на ігровий процес, атмосферу та естетику. Різні жанри ігор, як-от ігри з відкритим світом, виживання, рольові ігри та симулятори, можуть отримати переваги від денного та нічного циклу, щоб створити для гравців більш привабливий досвід.

Чому цикл дня і ночі корисний

Включення денного та нічного циклу може додати глибини та складності вашій грі. Його можна використовувати для:

  • Створюйте відчуття плину часу та живого дихаючого світу.
  • Впливайте на механізми ігрового процесу, наприклад змінюйте поведінку ворогів, видимість і дії гравців залежно від часу доби.
  • Збільште візуальну привабливість і атмосферу за допомогою змінних умов освітлення.
  • Представляйте нові виклики та можливості, як-от нічні квести або тимчасові події.

Типи ігор, які виграють від циклу дня та ночі

Ігри, які можуть добре використовувати цикл дня та ночі, включають:

  • Ігри з відкритим світом: Створіть більш захоплюючий світ, де час доби впливає на навколишнє середовище та поведінку NPC.
  • Ігри на виживання: Додайте стратегічні елементи, де гравці повинні підготуватися до небезпеки нічної пори.
  • Рольові ігри: Додайте події, квести та елементи динамічного оповідання.
  • Ігри-симулятори: Симулюйте реалістичне середовище та розпорядок дня для персонажів.

Покроковий посібник із впровадження денного та нічного циклу в Unity

Крок 1: Налаштування сцени

Спочатку створіть нову сцену або використайте наявну. Переконайтеся, що ваша сцена має спрямоване світло, яке діятиме як сонце.

Крок 2: Створення сценарію денного та нічного циклу

Створіть новий сценарій C# під назвою DayNightCycle і прикріпіть його до порожнього GameObject у вашій сцені. Ось сценарій для обробки циклу:

using UnityEngine;

public class DayNightCycle : MonoBehaviour
{
    public Light directionalLight;
    public float dayLength = 120f; // Length of a full day in seconds
    private float time;

    void Update()
    {
        // Increment time
        time += Time.deltaTime / dayLength;
        time %= 1; // Keep time in range [0, 1]

        // Rotate the directional light to simulate the sun's movement
        float sunAngle = time * 360f - 90f;
        directionalLight.transform.localRotation = Quaternion.Euler(sunAngle, 170f, 0f);

        // Adjust the light's intensity based on the time of day
        if (time <= 0.23f || time >= 0.75f)
        {
            directionalLight.intensity = 0;
        }
        else if (time <= 0.25f)
        {
            directionalLight.intensity = Mathf.Lerp(0, 1, (time - 0.23f) * 50);
        }
        else if (time >= 0.73f)
        {
            directionalLight.intensity = Mathf.Lerp(1, 0, (time - 0.73f) * 50);
        }
        else
        {
            directionalLight.intensity = 1;
        }
    }
}

Крок 3: Налаштування світла

Призначте своє спрямоване світло змінній directionalLight в інспекторі. Налаштуйте змінну dayLength, щоб установити тривалість повного дня в секундах.

Крок 4: Додавання Skybox і навколишнього освітлення

Щоб ще більше посилити візуальний ефект, ви можете змінювати скайбокс і навколишнє освітлення залежно від часу доби. Додайте наступний код до сценарію DayNightCycle:

public Material daySkybox;
public Material nightSkybox;
public Color dayAmbientLight;
public Color nightAmbientLight;

void Update()
{
    // Existing time and light rotation code...

    // Change skybox based on time of day
    if (time >= 0.25f && time < 0.75f)
    {
        RenderSettings.skybox = daySkybox;
        RenderSettings.ambientLight = dayAmbientLight;
    }
    else
    {
        RenderSettings.skybox = nightSkybox;
        RenderSettings.ambientLight = nightAmbientLight;
    }

    DynamicGI.UpdateEnvironment();
}

Крок 5: Призначення Skyboxes і Ambient Light

В інспекторі призначте відповідні матеріали для денного та нічного скайбоксів, а також кольори для зовнішнього освітлення.

Крок 6. Тестування денного та нічного циклу

Розіграйте сцену та спостерігайте за циклом дня та ночі в дії. За потреби відрегулюйте параметри для досягнення бажаного ефекту.

Висновок

Додавання циклу дня та ночі до вашої гри Unity може значно покращити досвід гравця, створивши динамічний та захоплюючий світ. Дотримуючись цього підручника, ви можете реалізувати базовий денний і нічний цикл і налаштувати його відповідно до потреб вашої гри. Незалежно від того, чи розробляєте ви пригоду у відкритому світі, гру на виживання чи симуляцію, цикл дня й ночі може оживити вашу гру.