Créer un contrôleur à la première personne dans Unity
Ce tutoriel vous guidera dans la création d'un contrôleur à la première personne simple dans Unity. Le contrôleur à la première personne permet aux joueurs d'explorer un monde en 3D avec des mouvements et une rotation de caméra fluides. Nous utiliserons des scripts C# de base et le composant CharacterController intégré d'Unity.
1. Mise en place de la scène
Commencez par configurer l’environnement de scène de base pour votre contrôleur à la première personne:
- Dans Unity, créez une nouvelle scène 3D.
- Accédez à GameObject > Objet 3D > Plan pour créer une surface au sol.
- Ajustez l'échelle de l'avion pour le rendre suffisamment grand pour que le joueur puisse se déplacer.
- Accédez à GameObject > Objet 3D > Cube pour ajouter des obstacles ou des murs avec lesquels interagir.
2. Ajout de l'objet joueur
Pour représenter le joueur, nous utiliserons un objet capsule:
- Allez dans GameObject > Objet 3D > Capsule pour ajouter une capsule à la scène.
- Positionnez la capsule légèrement au-dessus du sol (par exemple, Position = (0, 1, 0)).
- Renommez la capsule en Player.
- Supprimez le composant Capsule Collider puisque le CharacterController gérera les collisions.
- Ajoutez un composant CharacterController à l'objet Player en sélectionnant le Player, puis en cliquant sur Ajouter un composant dans l'inspecteur et en recherchant CharacterController.
3. Écriture du script du contrôleur à la première personne
Maintenant, créons un script pour gérer le mouvement du joueur et la rotation de la caméra:
- Dans la fenêtre Projet, faites un clic droit et sélectionnez Créer > Script C#. Nommez-le FirstPersonController.
- Attachez le script à l’objet Player en le faisant glisser de la fenêtre Projet vers le Player dans la hiérarchie.
Ouvrez le script et remplacez le contenu par le code suivant:
using UnityEngine;
public class FirstPersonController : MonoBehaviour
{
public float moveSpeed = 5f;
public float mouseSensitivity = 2f;
public float gravity = -9.81f;
private CharacterController controller;
private Vector3 velocity;
private Transform cameraTransform;
void Start()
{
controller = GetComponent();
cameraTransform = Camera.main.transform;
cameraTransform.position = new Vector3(transform.position.x, transform.position.y + 1.5f, transform.position.z);
cameraTransform.parent = transform; // Attach camera to player
}
void Update()
{
// Player movement
float moveX = Input.GetAxis("Horizontal") * moveSpeed;
float moveZ = Input.GetAxis("Vertical") * moveSpeed;
Vector3 move = transform.right * moveX + transform.forward * moveZ;
controller.Move(move * Time.deltaTime);
// Apply gravity
if (controller.isGrounded && velocity.y < 0)
{
velocity.y = -2f;
}
velocity.y += gravity * Time.deltaTime;
controller.Move(velocity * Time.deltaTime);
// Camera rotation
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;
transform.Rotate(Vector3.up * mouseX);
cameraTransform.Rotate(Vector3.left * mouseY);
}
}
4. Fixation de la caméra
Pour la vue à la première personne, la caméra doit être attachée au joueur:
- Sélectionnez la Caméra principale dans la hiérarchie.
- Positionnez-le légèrement au-dessus de l'objet Player (par exemple, Y = 1,5).
- Faites glisser la caméra sur l'objet Player dans la hiérarchie pour en faire un enfant du Player. Cela lui permettra de suivre les mouvements et les rotations du joueur.
5. Configuration des entrées
Le gestionnaire d'entrées d'Unity utilise des noms d'axes prédéfinis tels que « Horizontal » et « Vertical » pour le mouvement, ainsi que « Mouse X » et « Mouse Y » pour la saisie de la souris. Ceux-ci sont configurés automatiquement, mais vous pouvez ajuster la sensibilité dans Edition > Paramètres du projet > Gestionnaire d'entrées.
6. Test du contrôleur
Maintenant que le contrôleur à la première personne est prêt, appuyez sur le bouton de lecture pour le tester:
- Utilisez W, A, S, D pour déplacer le joueur vers l'avant, vers l'arrière et latéralement.
- Déplacez la souris pour faire pivoter la caméra et regarder autour de vous.
- Assurez-vous que la gravité fonctionne en descendant de tout objet surélevé pour voir si le joueur tombe naturellement.
7. Amélioration du contrôleur
Vous pouvez améliorer davantage le contrôleur à la première personne en ajoutant:
- Fonctionnalité de sprint en augmentant la vitesse de déplacement en maintenant la touche Maj enfoncée.
- Logique de saut en détectant lorsque le joueur appuie sur la barre d'espace et en appliquant une vitesse ascendante.
- Mécanique d'escalade ou d'accroupissement pour des interactions plus complexes du joueur avec l'environnement.
Conclusion
Avec ce contrôleur de base à la première personne, vous disposez désormais d'une configuration de joueur fonctionnelle pour explorer les environnements 3D. En personnalisant et en étendant le script, vous pouvez ajouter davantage de fonctionnalités et d'interactions en fonction des besoins de votre jeu.