Реалізація умови перемоги в Unity

У багатьох іграх чітка умова виграшу є важливою для визначення того, коли гравець досяг успіху. У цьому підручнику ми реалізуємо просту умову виграшу в Unity. Ця умова перевіряє, чи гравець відповідає певним критеріям (наприклад, збирає предмети, перемагає ворогів або досягає пункту призначення), і запускає стан перемоги, коли ці умови виконуються.

1. Визначте умови виграшу

Перш ніж запроваджувати систему, нам потрібно визначити, що є виграшем у вашій грі. У цьому прикладі ми припустимо, що гравець виграє, зібравши всі необхідні предмети на рівні. Ви можете змінити це, щоб відповідати іншим типам ігор, як-от перемогти ворогів або виконати завдання.

2. Створіть Win Manager

Сценарій WinManager оброблятиме логіку для перевірки умови виграшу. Ми створимо систему, яка перевіряє, чи гравець зібрав усі необхідні предмети, і коли це станеться, вона запустить подію виграшу.

using UnityEngine;

public class WinManager : MonoBehaviour
{
    public int totalItems = 5; // Total number of items needed to win
    private int collectedItems = 0; // Counter for collected items

    // Call this method when the player collects an item
    public void CollectItem()
    {
        collectedItems++;
        Debug.Log("Item collected. " + collectedItems + "/" + totalItems);

        // Check if the player has collected all items
        if (collectedItems >= totalItems)
        {
            WinGame();
        }
    }

    // This method is called when the player wins
    private void WinGame()
    {
        Debug.Log("You win!");
        // Here you can add more win logic like displaying a UI or stopping the game
        // For example, load a win scene:
        // SceneManager.LoadScene("WinScene");
    }
}

Цей сценарій WinManager відстежує, скільки предметів зібрав гравець. Коли гравець збирає всі предмети (або виконує умову виграшу), викликається метод WinGame(), який відображає просте повідомлення «Ви виграли!» повідомлення. Ви можете легко розширити це, щоб показати екран перемоги або перейти до нової сцени.

3. Налаштування системи збору речей

Тепер ми створимо систему, яка дозволить гравцеві збирати предмети. Це можна зробити, виявивши, коли гравець стикається з колекційними об’єктами.

using UnityEngine;

public class CollectibleItem : MonoBehaviour
{
    public WinManager winManager;

    // When the player collides with the item, it is collected
    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            winManager.CollectItem(); // Notify the WinManager
            Destroy(gameObject); // Remove the collected item from the scene
        }
    }
}

Цей сценарій визначає, коли гравець стикається з предметом, і повідомляє WinManager, що предмет було зібрано. Після того, як предмет зібраний, він знищується з місця події.

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

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

  1. Створіть полотно на сцені (GameObject > UI > Canvas).
  2. Додайте елемент Text на полотно, щоб відобразити повідомлення "You Win!" повідомлення.
  3. У сценарії WinManager посилайтеся на цей текстовий елемент і оновлюйте його видимість, коли гравець виграє.
using UnityEngine;
using UnityEngine.UI;

public class WinManager : MonoBehaviour
{
    public int totalItems = 5;
    private int collectedItems = 0;
    public Text winText; // Reference to the "You Win!" text UI

    public void CollectItem()
    {
        collectedItems++;
        Debug.Log("Item collected. " + collectedItems + "/" + totalItems);

        if (collectedItems >= totalItems)
        {
            WinGame();
        }
    }

    private void WinGame()
    {
        Debug.Log("You win!");
        winText.text = "You Win!"; // Show the win message
        winText.gameObject.SetActive(true); // Make the message visible
        Time.timeScale = 0; // Stop the game (optional)
    }
}

У наведеному вище коді, коли гравець виграє, текстовий компонент winText оновлюється для відображення «You Win!» і гра призупиняється за допомогою Time.timeScale = 0;.

5. Тестування умови перемоги

Пограйте в гру та перевірте, чи спрацьовує умова виграшу, коли гравець збирає всі предмети. Ви повинні побачити повідомлення "Ви виграли!" повідомлення на екрані, і гра призупиниться. Якщо ви використовуєте перехід між сценами, ви також можете завантажити нову сцену, щоб вказати, що гра закінчилася.

Розширення умови виграшу

Залежно від типу вашої гри умови виграшу можна розширити, включивши додаткові фактори:

  • Перемогти всіх ворогів на рівні.
  • Досягнення певного місця протягом обмеженого часу.
  • Виконання серії завдань або цілей.

Ці умови можна додати подібним чином, створивши нові сценарії або змінивши WinManager для врахування різних сценаріїв.

Висновок

Ми реалізували просту умову виграшу в Unity на основі збору предметів. Ця система є гнучкою і може бути легко адаптована до інших ігрових механізмів. З додаванням інтерфейсу користувача та належним процесом гри тепер у вас є базова структура для запуску умов виграшу у вашій грі.