Créer un système de quête dans Unity

Les quêtes sont un élément fondamental de nombreux jeux, offrant aux joueurs des objectifs et des récompenses. Dans ce tutoriel, vous apprendrez à créer un système de quête simple dans Unity. Nous aborderons la création, le suivi et l'achèvement des quêtes.

Mise en place du projet

Avant de commencer à coder, configurons un projet Unity simple:

  1. Créez un nouveau projet Unity.
  2. Créez un nouveau dossier nommé Scripts pour organiser nos scripts.
  3. Créez un autre dossier nommé Resources pour stocker nos données de quête.

Création de la classe Quête

La première étape consiste à définir une classe Quest pour contenir les informations de quête telles que le titre, la description et l’état d’achèvement.

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

Création du gestionnaire de quêtes

Ensuite, nous avons besoin d'un gestionnaire pour gérer nos quêtes. La classe QuestManager stockera et gérera les quêtes actives.

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

Affichage des quêtes dans l'interface utilisateur

Pour afficher les quêtes au joueur, nous avons besoin d'une interface utilisateur simple. Créez un élément Canvas et un élément Text dans votre scène pour afficher la liste des quêtes.

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

Interagir avec les quêtes

Ajoutons quelques fonctionnalités pour interagir avec nos quêtes. Par exemple, nous pouvons ajouter un bouton pour terminer une quête.

using UnityEngine;

public class QuestGiver : MonoBehaviour
{
    public string questTitle;

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

Tester le système de quête

Pour tester le système de quête, ajoutez un QuestManager et un QuestUI à votre scène. Créez une zone de déclenchement simple avec un script QuestGiver attaché et attribuez un titre de quête à terminer.

Conclusion

Nous avons abordé les bases de la création d'un système de quête dans Unity. Nous avons appris à créer des quêtes, à les gérer, à les afficher dans l'interface utilisateur et à interagir avec elles. Ces concepts peuvent être étendus pour créer des systèmes de quête plus complexes dans vos projets Unity.