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
- Ouvrez Unity et créez un nouveau projet 3D.
- Nommez votre projet
HuntingGame
et cliquez surCréer
. - Dans la fenêtre Projet, créez des dossiers nommés
Scripts
,Prefabs
etMaterials
pour organiser vos ressources.
Configuration de l'environnement
- Dans la hiérarchie, faites un clic droit et sélectionnez
Objet 3D > Terrain
pour créer un terrain. - 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. - 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
- Dans la hiérarchie, faites un clic droit et sélectionnez
Objet 3D > Capsule
pour créer un personnage joueur. - Renommez la capsule en
Player
et positionnez-la au-dessus du terrain. - Ajoutez un composant
Rigidbody
à l'objetPlayer
pour un mouvement basé sur la physique. - Ajoutez une
Camera
comme enfant de l'objetPlayer
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);
}
}
- Créez un nouveau script C# nommé
PlayerMovement.cs
dans le dossierScripts
. - Attachez le script
PlayerMovement
à l'objetPlayer
.
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
- Importez ou créez un modèle 3D pour l'animal (par exemple, un cerf).
- Faites glisser le modèle dans la scène et positionnez-le sur le terrain.
- 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-leCerf
. - Faites glisser le modèle 3D dans l'objet
Deer
et réinitialisez sa transformation. - Enregistrez l'objet
Deer
en tant que préfabriqué en le faisant glisser dans le dossierPrefabs
.
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);
}
}
}
- Créez un nouveau script C# nommé
AnimalAI.cs
dans le dossierScripts
. - Attachez le script
AnimalAI
au préfabDeer
. - Ajoutez un composant
NavMeshAgent
au préfabDeer
. - 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 scriptAnimalAI
.
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);
}
}
}
- Créez un nouveau script C# nommé
PlayerShooting.cs
dans le dossierScripts
. - Attachez le script
PlayerShooting
à l'objetPlayer
. - 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;
}
}
- Créez un nouveau script C# nommé
ScoreManager.cs
dans le dossierScripts
. - Attachez le script
ScoreManager
à un nouveau GameObject vide nomméGameManager
. - Créez un élément de texte d'interface utilisateur pour afficher le score et attribuez-le au champ
scoreText
dans le scriptScoreManager
.
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.