Membuat Sistem Quest di Unity

Misi merupakan bagian mendasar dari banyak permainan, yang memberikan pemain tujuan dan hadiah. Dalam tutorial ini, Anda akan mempelajari cara membuat sistem misi sederhana di Unity. Kami akan membahas pembuatan, pelacakan, dan penyelesaian misi.

Menyiapkan Proyek

Sebelum kita mulai membuat kode, mari kita buat proyek Unity sederhana:

  1. Buat proyek Unity baru.
  2. Buat folder baru bernama Scripts untuk mengatur skrip kita.
  3. Buat folder lain bernama Resources untuk menyimpan data pencarian kita.

Membuat Kelas Quest

Langkah pertama adalah mendefinisikan kelas Quest untuk menampung informasi misi seperti judul, deskripsi, dan status penyelesaian.

using UnityEngine;

[System.Serializable]
public class Quest
{
    public string title;
    public string description;
    public bool isCompleted;

    public Quest(string title, string description)
    {
        this.title = title;
        this.description = description;
        this.isCompleted = false;
    }

    public void CompleteQuest()
    {
        isCompleted = true;
        Debug.Log("Quest Completed: " + title);
    }
}

Membuat Manajer Quest

Selanjutnya, kita memerlukan manajer untuk menangani misi kita. Kelas QuestManager akan menyimpan dan mengelola misi yang aktif.

using System.Collections.Generic;
using UnityEngine;

public class QuestManager : MonoBehaviour
{
    public List<Quest> quests = new List<Quest>();

    void Start()
    {
        // Example quests
        quests.Add(new Quest("Find the Key", "Find the key to unlock the door."));
        quests.Add(new Quest("Defeat the Dragon", "Defeat the dragon in the cave."));
    }

    public void CompleteQuest(string title)
    {
        Quest quest = quests.Find(q => q.title == title);
        if (quest != null && !quest.isCompleted)
        {
            quest.CompleteQuest();
        }
    }

    public List<Quest> GetActiveQuests()
    {
        return quests.FindAll(q => !q.isCompleted);
    }
}

Menampilkan Quest di UI

Untuk menampilkan misi kepada pemain, kita memerlukan UI yang sederhana. Buat elemen Canvas dan Text di scene Anda untuk menampilkan daftar misi.

using UnityEngine;
using UnityEngine.UI;

public class QuestUI : MonoBehaviour
{
    public Text questListText;
    private QuestManager questManager;

    void Start()
    {
        questManager = FindObjectOfType<QuestManager>();
        UpdateQuestList();
    }

    void UpdateQuestList()
    {
        questListText.text = "Quests:\n";
        foreach (Quest quest in questManager.GetActiveQuests())
        {
            questListText.text += "- " + quest.title + ": " + quest.description + "\n";
        }
    }
}

Berinteraksi dengan Quest

Mari tambahkan beberapa fungsi untuk berinteraksi dengan misi kita. Misalnya, kita dapat menambahkan tombol untuk menyelesaikan misi.

using UnityEngine;

public class QuestGiver : MonoBehaviour
{
    public string questTitle;

    void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            QuestManager questManager = FindObjectOfType<QuestManager>();
            questManager.CompleteQuest(questTitle);
        }
    }
}

Menguji Sistem Quest

Untuk menguji sistem misi, tambahkan QuestManager dan QuestUI ke adegan Anda. Buat zona pemicu sederhana dengan skrip QuestGiver yang dilampirkan, dan tetapkan judul misi untuk diselesaikan.

Kesimpulan

Kami telah membahas dasar-dasar pembuatan sistem misi di Unity. Kami mempelajari cara membuat misi, mengelolanya, menampilkannya di UI, dan berinteraksi dengannya. Konsep-konsep ini dapat diperluas untuk membuat sistem misi yang lebih kompleks di proyek Unity Anda.