Créer un jeu de chasse dans Unity

Dans ce tutoriel, nous allons parcourir le processus de création d'un jeu de chasse de base dans Unity. Ce jeu comprendra des éléments tels que les mouvements des joueurs, l'IA animale, les mécanismes de tir et un système de notation. Nous aborderons:

  • Mise en place du projet et de l'environnement
  • Création de commandes de lecteur
  • Mise en œuvre de l'IA animale
  • Ajout de mécanismes de tir
  • Mise en place d'un système de notation

Mise en place du projet

Commençons par configurer un nouveau projet Unity et créer l'environnement.

Création du projet

  1. Ouvrez Unity et créez un nouveau projet 3D.
  2. Nommez votre projet HuntingGame et cliquez sur Créer.
  3. Dans la fenêtre Projet, créez des dossiers nommés Scripts, Prefabs et Materials pour organiser vos ressources.

Configuration de l'environnement

  1. Dans la hiérarchie, faites un clic droit et sélectionnez Objet 3D > Terrain pour créer un terrain.
  2. Personnalisez le terrain en utilisant les Outils de terrain pour peindre des textures, ajouter des arbres et placer de l'herbe ou d'autres détails.
  3. Ajoutez quelques objets 3D comme des rochers et des arbres pour rendre l’environnement plus réaliste.

Création de commandes de lecteur

Ensuite, nous allons créer le personnage du joueur et implémenter des contrôles de mouvement basés sur la physique.

Personnage du joueur

  1. Dans la hiérarchie, faites un clic droit et sélectionnez Objet 3D > Capsule pour créer un personnage joueur.
  2. Renommez la capsule en Player et positionnez-la au-dessus du terrain.
  3. Ajoutez un composant Rigidbody à l'objet Player pour un mouvement basé sur la physique.
  4. Ajoutez une Camera comme enfant de l'objet Player pour servir de point de vue au joueur.

Script de mouvement du joueur

using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float moveSpeed = 5f;
    public float rotationSpeed = 100f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent();
        rb.freezeRotation = true;
    }

    void FixedUpdate()
    {
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");

        Vector3 movement = transform.forward * moveVertical * moveSpeed * Time.deltaTime;
        rb.MovePosition(rb.position + movement);

        float rotation = Input.GetAxis("Mouse X") * rotationSpeed * Time.deltaTime;
        Quaternion turnRotation = Quaternion.Euler(0f, rotation, 0f);
        rb.MoveRotation(rb.rotation * turnRotation);
    }
}
  1. Créez un nouveau script C# nommé PlayerMovement.cs dans le dossier Scripts.
  2. Attachez le script PlayerMovement à l'objet Player.

Mise en œuvre de l'IA animale

Nous allons créer une IA animale simple pour parcourir l'environnement et réagir au joueur.

Préfabriqué animalier

  1. Importez ou créez un modèle 3D pour l'animal (par exemple, un cerf).
  2. Faites glisser le modèle dans la scène et positionnez-le sur le terrain.
  3. Cliquez avec le bouton droit sur le modèle dans la hiérarchie et sélectionnez Créer un objet vide pour créer un objet parent. Nommez-le Cerf.
  4. Faites glisser le modèle 3D dans l'objet Deer et réinitialisez sa transformation.
  5. Enregistrez l'objet Deer en tant que préfabriqué en le faisant glisser dans le dossier Prefabs.

Script d'IA animale

using UnityEngine;
using UnityEngine.AI;

public class AnimalAI : MonoBehaviour
{
    public Transform[] waypoints;
    private NavMeshAgent agent;
    private int currentWaypoint = 0;

    void Start()
    {
        agent = GetComponent();
        agent.SetDestination(waypoints[currentWaypoint].position);
    }

    void Update()
    {
        if (agent.remainingDistance < agent.stoppingDistance)
        {
            currentWaypoint = (currentWaypoint + 1) % waypoints.Length;
            agent.SetDestination(waypoints[currentWaypoint].position);
        }
    }
}
  1. Créez un nouveau script C# nommé AnimalAI.cs dans le dossier Scripts.
  2. Attachez le script AnimalAI au préfab Deer.
  3. Ajoutez un composant NavMeshAgent au préfab Deer.
  4. Configurez des points de cheminement dans la scène en créant des GameObjects vides et en les positionnant comme vous le souhaitez. Affectez ces points de cheminement au tableau waypoints dans le script AnimalAI.

Ajout de mécanismes de tir

Nous allons implémenter la possibilité pour le joueur de tirer sur les animaux.

Scénario de tournage

using UnityEngine;

public class PlayerShooting : MonoBehaviour
{
    public Camera playerCamera;
    public float range = 100f;
    public GameObject impactEffect;

    void Update()
    {
        if (Input.GetButtonDown("Fire1"))
        {
            Shoot();
        }
    }

    void Shoot()
    {
        RaycastHit hit;
        if (Physics.Raycast(playerCamera.transform.position, playerCamera.transform.forward, out hit, range))
        {
            AnimalAI animal = hit.transform.GetComponent();
            if (animal != null)
            {
                Destroy(hit.transform.gameObject);
            }

            GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
            Destroy(impactGO, 2f);
        }
    }
}
  1. Créez un nouveau script C# nommé PlayerShooting.cs dans le dossier Scripts.
  2. Attachez le script PlayerShooting à l'objet Player.
  3. Créez un effet d'impact (par exemple, un système de particules) et attribuez-le au champ impactEffect dans le script.

Mise en place d'un système de notation

Nous ajouterons un système de notation simple pour suivre les chasses réussies du joueur.

Script du gestionnaire de partitions

using UnityEngine;
using UnityEngine.UI;

public class ScoreManager : MonoBehaviour
{
    public static int score = 0;
    public Text scoreText;

    void Update()
    {
        scoreText.text = "Score: " + score.ToString();
    }

    public static void AddScore(int points)
    {
        score += points;
    }
}
  1. Créez un nouveau script C# nommé ScoreManager.cs dans le dossier Scripts.
  2. Attachez le script ScoreManager à un nouveau GameObject vide nommé GameManager.
  3. Créez un élément de texte d'interface utilisateur pour afficher le score et attribuez-le au champ scoreText dans le script ScoreManager.

Mise à jour du script de tir pour suivre le score

void Shoot()
{
    RaycastHit hit;
    if (Physics.Raycast(playerCamera.transform.position, playerCamera.transform.forward, out hit, range))
    {
        AnimalAI animal = hit.transform.GetComponent();
        if (animal != null)
        {
            Destroy(hit.transform.gameObject);
            ScoreManager.AddScore(10);
        }

        GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
        Destroy(impactGO, 2f);
    }
}

Conclusion

Nous avons créé un jeu de chasse basique dans Unity. Nous avons mis en place le projet et l'environnement, créé des commandes de joueur avec des mouvements basés sur la physique, implémenté l'IA animale, ajouté des mécanismes de tir et mis en place un système de notation. Ces connaissances fondamentales peuvent être étendues pour inclure des comportements plus complexes, des animaux supplémentaires et des mécanismes de jeu raffinés pour améliorer votre jeu de chasse.