Menerapkan Kondisi Kemenangan di Unity

Dalam banyak permainan, kondisi kemenangan yang jelas sangat penting untuk menentukan kapan pemain telah berhasil. Dalam tutorial ini, kami akan menerapkan kondisi kemenangan sederhana di Unity. Kondisi ini akan memeriksa apakah pemain memenuhi kriteria tertentu (misalnya, mengumpulkan item, mengalahkan musuh, atau mencapai tujuan) dan memicu status kemenangan saat kondisi tersebut terpenuhi.

1. Tentukan Kondisi Kemenangan

Sebelum menerapkan sistem, kita perlu mendefinisikan apa yang dimaksud dengan kemenangan dalam permainan Anda. Untuk contoh ini, kita akan berasumsi bahwa pemain menang dengan mengumpulkan semua item yang dibutuhkan dalam level tersebut. Anda dapat memodifikasi ini agar sesuai dengan jenis permainan lainnya, seperti mengalahkan musuh atau menyelesaikan tujuan.

2. Buat Manajer Kemenangan

Skrip WinManager akan menangani logika untuk memeriksa kondisi kemenangan. Kami akan membuat sistem yang memeriksa apakah pemain telah mengumpulkan semua item yang diperlukan, dan ketika itu terjadi, sistem akan memicu peristiwa kemenangan.

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");
    }
}

Skrip WinManager ini melacak berapa banyak item yang telah dikumpulkan pemain. Setelah pemain mengumpulkan semua item (atau memenuhi syarat menang), metode WinGame() dipanggil, menampilkan pesan sederhana “Anda menang!”. Anda dapat dengan mudah memperluasnya untuk menampilkan layar kemenangan atau transisi ke adegan baru.

3. Menyiapkan Sistem Pengumpulan Barang

Sekarang, kita akan membuat sistem yang memungkinkan pemain mengumpulkan item. Ini dapat dilakukan dengan mendeteksi saat pemain bertabrakan dengan objek koleksi.

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
        }
    }
}

Skrip ini mendeteksi saat pemain bertabrakan dengan sebuah item dan memberi tahu WinManager bahwa item tersebut telah diambil. Setelah item diambil, item tersebut dihancurkan dari lokasi kejadian.

4. Menerapkan UI untuk Kondisi Menang

Penting untuk memberi tahu pemain saat mereka menang. Kami akan membuat UI sederhana untuk menampilkan pesan saat pemain mengumpulkan semua item.

  1. Buat Kanvas di tempat kejadian (GameObject > UI > Canvas).
  2. Tambahkan elemen Teks ke kanvas untuk menampilkan pesan "Anda Menang!"
  3. Dalam skrip WinManager, rujuk elemen Teks ini dan perbarui visibilitasnya saat pemain menang.
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)
    }
}

Pada kode di atas, saat pemain menang, komponen Teks winText diperbarui untuk menampilkan “Anda Menang!” dan permainan dijeda menggunakan Time.timeScale = 0;.

5. Menguji Kondisi Kemenangan

Mainkan permainan dan periksa apakah kondisi menang terpicu saat pemain mengumpulkan semua item. Anda akan melihat pesan "Anda Menang!" di layar, dan permainan akan berhenti sebentar. Jika Anda menggunakan transisi adegan, Anda juga dapat memuat adegan baru untuk menunjukkan bahwa permainan telah berakhir.

Memperluas Kondisi Kemenangan

Bergantung pada jenis permainan Anda, kondisi kemenangan dapat diperluas untuk mencakup faktor-faktor tambahan:

  • Mengalahkan semua musuh dalam satu level.
  • Mencapai lokasi tertentu dalam batas waktu.
  • Menyelesaikan serangkaian tugas atau tujuan.

Kondisi ini dapat ditambahkan dengan cara yang sama dengan membuat skrip baru atau memodifikasi WinManager untuk memperhitungkan skenario yang berbeda.

Kesimpulan

Kami menerapkan kondisi kemenangan sederhana di Unity berdasarkan pengumpulan item. Sistem ini fleksibel dan dapat dengan mudah disesuaikan dengan mekanisme permainan lainnya. Dengan penambahan UI dan alur permainan yang tepat, kini Anda memiliki struktur dasar untuk memicu kondisi kemenangan dalam permainan Anda.