Comment créer un mouvement de souris fluide dans Unity

Le mouvement fluide de la souris est un aspect essentiel du développement de jeux qui contribue à améliorer l'expérience globale de l'utilisateur. En implémentant un mouvement fluide de la souris, vous pouvez rendre la caméra ou les commandes du joueur de votre jeu plus fluides et réactives, ce qui se traduit par une expérience de jeu soignée et immersive. Dans ce didacticiel, nous vous expliquerons comment configurer un mouvement fluide de la souris dans Unity, avec des instructions étape par étape et des exemples de code en C#. Nous discuterons également des raisons possibles pour lesquelles vous souhaiteriez implémenter cette fonctionnalité dans vos jeux.

Pourquoi mettre en œuvre un mouvement de souris fluide ?

Voici quelques raisons pour lesquelles un mouvement fluide de la souris est important dans les jeux:

  • Expérience utilisateur améliorée: Des commandes fluides aident le joueur à se sentir plus en contrôle de ses actions, ce qui est essentiel pour l'immersion, en particulier dans les jeux à la première ou à la troisième personne.
  • Précision améliorée: Le réglage précis des mouvements de la souris permet des commandes de caméra plus précises, ce qui est crucial dans les jeux de tir ou tout jeu impliquant une visée précise.
  • Aspect et sensation soignés: Cela rend le jeu plus professionnel et soigné, ce qui est essentiel pour fidéliser les joueurs et les maintenir engagés.
  • Réduit le mal des transports: Des mouvements de caméra saccadés ou trop sensibles peuvent provoquer une gêne ou le mal des transports chez les joueurs. Des mouvements de souris fluides peuvent aider à réduire ce risque.

Configuration du mouvement fluide de la souris dans Unity

Passons en revue les étapes pour créer un mouvement de souris fluide dans Unity.

Étape 1: Créer un nouveau script

Tout d'abord, créez un nouveau script C# qui contrôlera le mouvement de la souris. Vous pouvez nommer ce script quelque chose comme MouseLook.

using UnityEngine;

public class MouseLook : MonoBehaviour
{
    public float mouseSensitivity = 100f;
    public Transform playerBody;

    private float xRotation = 0f;

    void Start()
    {
        // Lock the cursor in the middle of the screen
        Cursor.lockState = CursorLockMode.Locked;
    }

    void Update()
    {
        // Get mouse movement input
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;

        // Invert the Y-axis for a more natural control feel
        xRotation -= mouseY;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);

        // Rotate the camera around the X-axis (up and down)
        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);

        // Rotate the player object around the Y-axis (left and right)
        playerBody.Rotate(Vector3.up * mouseX);
    }
}

Dans ce code:

  • mouseSensitivity contrôle la sensibilité de l'entrée de la souris.
  • playerBody représente la transformation du joueur, qui tourne le long de l'axe Y pour le mouvement horizontal de la souris.
  • La variable xRotation stocke la rotation verticale actuelle (haut et bas), et elle est limitée entre -90 et 90 degrés pour éviter une rotation excessive.
  • Nous verrouillons le curseur de la souris au centre de l'écran pour éviter que le curseur ne sorte de la fenêtre de jeu.

Étape 2: Attachez le script à la caméra

Maintenant que le script est prêt, allez dans votre scène Unity et attachez le script MouseLook à votre caméra (par exemple, l'objet Main Camera).

Ensuite, attribuez le champ playerBody en faisant glisser l'objet joueur (généralement le contrôleur de personnage ou un objet de jeu vide représentant le joueur) dans le champ Player Body du script dans l'inspecteur.

Étape 3: Régler la sensibilité de la souris

Vous pouvez expérimenter avec la valeur mouseSensitivity pour obtenir le niveau de contrôle souhaité. Un bon point de départ est 100, mais vous pouvez l'ajuster plus haut ou plus bas en fonction du niveau de précision souhaité.

Étape 4: Gestion de la fluidité des entrées

Pour un mouvement encore plus fluide, vous pouvez appliquer une interpolation aux valeurs d'entrée de la souris. Cela garantit que la caméra effectue une transition fluide entre chaque image, plutôt que de passer d'une position à l'autre. Voici un exemple de mise en œuvre de cette méthode:

using UnityEngine;

public class MouseLook : MonoBehaviour
{
    public float mouseSensitivity = 100f;
    public Transform playerBody;

    private float xRotation = 0f;
    private Vector2 smoothInputVelocity;
    public float smoothTime = 0.1f;
    private Vector2 currentMouseDelta;

    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
    }

    void Update()
    {
        // Get raw mouse input
        Vector2 targetMouseDelta = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y")) * mouseSensitivity;

        // Smooth the mouse input
        currentMouseDelta = Vector2.SmoothDamp(currentMouseDelta, targetMouseDelta, ref smoothInputVelocity, smoothTime);

        xRotation -= currentMouseDelta.y * Time.deltaTime;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);

        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
        playerBody.Rotate(Vector3.up * currentMouseDelta.x * Time.deltaTime);
    }
}

Cette version mise à jour introduit le lissage à l'aide de Vector2.SmoothDamp. La variable smoothTime contrôle le degré de fluidité de la transition. Des valeurs plus faibles rendent le mouvement plus réactif, tandis que des valeurs plus élevées le rendent plus lent et plus progressif.

Étape 5: Test et mise au point

Une fois le script en place, testez le jeu et ajustez les valeurs de sensibilité et de lissage en fonction de la fluidité souhaitée pour le mouvement de la souris. Vous pouvez également ajuster l'angle de serrage pour permettre plus ou moins de liberté de mouvement de la caméra.

Conclusion

En intégrant un mouvement de souris fluide dans votre projet Unity, vous pouvez améliorer considérablement l'expérience du joueur en offrant un contrôle précis et fluide de la caméra. Ce tutoriel vous a expliqué comment configurer un système de mouvement de souris de base et l'améliorer avec des techniques de lissage.