Dans ce très court tutoriel de programmation Unity 2D, je vais vous montrer comment faire en sorte que la caméra suive le personnage principal avec un léger retard au lieu de le faire instantanément, afin de créer des transitions plus fluides.



Transcription de la vidéo

Bonjour à tous. Dans ce très court tutoriel de programmation Unity 2D, je vais vous montrer comment faire en sorte que la caméra suive le personnage principal avec un léger retard au lieu de le faire instantanément, afin de créer des transitions plus fluides.

Ce tutoriel s’adresse à ceux qui sont déjà familiers avec le concept de Delta Time dans Unity et, éventuellement, avec des interpolations comme Slerp. J’ai déjà présenté ces concepts dans d’autres tutoriels de base, que vous pouvez trouver sous forme de vidéos en anglais sur la chaîne et sous forme de versions écrites, dans plusieurs langues, sur mon site web.

Dans l’exemple que je vais montrer, j’écrirai le code pour le déplacement le long de l’axe X par simplicité, mais il peut facilement être étendu au déplacement vertical le long de l’axe Y également.

Commençons par le script de base, qui contraint la position de la caméra à la position du personnage à suivre. Le script, ici appelé Camera Controller, inclut immédiatement une variable privée de type Transform qui doit être assignée dans l’éditeur à l’objet à suivre, afin de pouvoir récupérer sa position.

Dans la fonction Update, nous avons une variable de type float qui récupère la coordonnée X de la position du joueur et qui est utilisée dans la position de la caméra à la place de la coordonnée X propre à la caméra, dans une valeur appelée Camera X, afin que la caméra suive le personnage instantanément.

La première variation que nous essayons utilise Lerp. J’introduis donc une variable privée appelée Follow Time, de type float, qui peut être ajustée dans l’éditeur pour le réglage. Dans la fonction Update, j’utilise l’option numéro 2 pour définir la coordonnée X de la caméra, qui est maintenant donnée par le résultat de la fonction Lerp.

Lerp est une fonction native de Unity qui effectue une interpolation linéaire entre la position actuelle de l’objet, donnée par Transform Position, et la position cible, donnée par Player Position. Le paramètre d’interpolation est représenté par le rapport entre Delta Time et la variable Follow Time, ce qui permet de contrôler la vitesse à laquelle la caméra se rapproche progressivement de la position cible et facilite également l’ajustement de ce comportement pendant l’exécution dans l’éditeur.

Avec la fonction Lerp, à chaque frame la caméra met à jour sa position en se rapprochant progressivement de la cible. De cette manière, le mouvement de la caméra paraît moins brusque par rapport à un déplacement instantané. Cependant, Lerp effectue une interpolation linéaire sans amortir la vitesse à proximité de la destination, ce qui peut rendre le mouvement moins naturel dans la phase finale d’approche. Pour obtenir une transition plus fluide, la méthode SmoothDamp entre en jeu.

Je rends alors disponibles deux nouvelles variables appelées Smooth Time et Velocity. En particulier, Smooth Time est un float privé utilisé pour ajuster l’interpolation, tout comme Follow Time dans le cas de Lerp. La variable Velocity est quant à elle un float passé à la méthode SmoothDamp pour stocker la vitesse actuelle pendant l’exécution.

La méthode native SmoothDamp permet d’implémenter un mouvement amorti et moins brusque, où la vitesse diminue à mesure que la caméra se rapproche de la position de destination. La variable Velocity représente la vitesse actuelle de la caméra le long de l’axe considéré. Velocity est passée à la méthode par référence et est automatiquement mise à jour à chaque frame pendant l’interpolation.

Dans le code, la coordonnée X de la caméra est maintenant le résultat d’une interpolation effectuée par SmoothDamp, conceptuellement similaire à Lerp parce qu’elle interpole entre deux valeurs, mais en produisant une transition plus fluide et en utilisant également, dans la signature de la méthode, la variable float Velocity.

SmoothDamp peut être considéré comme une évolution de Lerp qui introduit un amortissement progressif de la vitesse, rendant le mouvement plus naturel.

Voilà, c’est tout pour cette vidéo. Si vous l’avez trouvée utile, vous pouvez me remercier avec un Like et en vous abonnant à la chaîne. À très bientôt.

Ce site a pour seul objectif de présenter certains de mes travaux, sans aucune intention promotionnelle. Veuillez noter que je ne recherche actuellement - et ne répondrai pas - à aucune demande de travaux personnalisés, de conseil ou de toute autre forme de collaboration professionnelle.


POLITIQUE GENERALE DE CONFIDENTIALITE ET D'UTILISATION DES COOKIES