Déplacer des objets dans l’espace 3D de Unity peut être complexe sans une bonne compréhension des vecteurs.
Sans une manipulation adéquate, les objets peuvent se déplacer de manière imprécise, affectant l’expérience utilisateur.
L’article explore comment utiliser la translation de vecteur avec Vector3 pour un contrôle précis des mouvements dans Unity.
Créez votre premier jeu 3D en C# avec Unity, étape par étape.
La translation de vecteur est une opération fondamentale dans Unity pour déplacer des objets dans l’espace 3D. La structure Vector3 est au cœur de cette opération, représentant des vecteurs en trois dimensions, c’est-à-dire, les directions et distances dans l’espace X, Y, Z. Savoir manipuler cette structure est essentiel pour contrôler les mouvements et positions des objets dans un jeu.
- Les Vecteurs
A titre de rappel, un vecteur est représenté par un segment orienté (une flèche), ayant pour extrémités un point de départ et un point d’arrivée. Il n’a pas de position définie, dans un repère.
- Translation de Vecteur
Qu’il vous souvienne que dans l’article précédent, nous avions créé une variable forward de type Vector3 dont les coordonnées étaient (0, 0, 1). En réalité, un raccourci pour avoir le même résultat aurait été d’utiliser la propriété forward de la structure Vector3.
Comme l’illustre l’image ci-dessus, Vector3 possède des propriétés très pratiques. Voici un récapitulatif des plus usuelles.
- Propriété de la Structure Vector3
Propriété/Méthode | Description |
---|---|
Vector3.zero | Renvoie un vecteur (0, 0, 0). Pratique pour initialiser ou réinitialiser un vecteur. |
Vector3.one | Renvoie un vecteur (1, 1, 1). Utile pour les opérations de mise à l’échelle uniforme. |
Vector3.up | Renvoie un vecteur (0, 1, 0). Représente l’axe Y positif, souvent utilisé pour le mouvement vertical. |
Vector3.down | Renvoie un vecteur (0, -1, 0). Représente l’axe Y négatif. |
Vector3.left | Renvoie un vecteur (-1, 0, 0). Représente l’axe X négatif. |
Vector3.right | Renvoie un vecteur (1, 0, 0). Représente l’axe X positif. |
Vector3.forward | Renvoie un vecteur (0, 0, 1). Représente l’axe Z positif, souvent utilisé pour avancer dans une direction. |
Vector3.back | Renvoie un vecteur (0, 0, -1). Représente l’axe Z négatif. |
Vector3.magnitude | Renvoie la longueur (ou magnitude) du vecteur. Pratique pour calculer des distances. |
Vector3.normalized | Renvoie un vecteur de longueur 1, mais dans la même direction que le vecteur original. |
Vector3.Lerp | Effectue une interpolation linéaire entre deux vecteurs. |
- Translation de Vecteur
La translation de vecteur consiste à déplacer un objet d’un point à un autre sans changer sa direction ni son orientation. En termes simples, un vecteur représente la direction et la distance du déplacement .
Cela signifie que si vous avez un objet dans votre jeu, vous pouvez utiliser une translation de vecteur pour le déplacer d’un endroit à un autre dans la scène. Illustrons cet exemple, à l’échelle du repère ci – dessous.
Le cube se trouvait initialement à la position (0, 0, 1). Après une translation de 2 unités vers la droite, il se retrouve à présent à la position (2, 0, 1).
- Utilisation de Vector3 pour la Translation
Appliquons nos nouveaux acquis en améliorant le précédent code. Nous savons déjà que nous n’aurons plus besoin de la variable forward puisse que nous pourrons faire appel à la propriété forward de Vector3. Ensuite, nous pouvons également effectuer une translation en utilise la méthode Translate de la classe Transform . Le tout se présente comme suit :
usingUnityEngine;
publicclassCubeMove : MonoBehaviour {
[SerializeField] privatefloatspeed = 3f;
// Update is called once per frame
voidUpdate() {
transform.Translate(Vector3.forward * Time.deltaTime * speed);
}
}
Ce code produit le même résultat que le précédent. Il déplace un objet continuellement vers la droite le long de l’axe Z en utilisant la méthode Translate, qui applique une translation à l’objet selon le vecteur direction. La vitesse est contrôlée par la variable speed , et Time.deltaTime assure que le mouvement est indépendant du taux de rafraîchissement.
Par ailleurs, vous pouvez prendre le temps de tester les différentes propriétés de Vector3 que nous avons découvert plus haut pour faire bouger le cube dans des sens différents ( up , down , right , left , back ).
Maintenant que vous maîtrisez la translation avec Vector3, l’étape suivante consiste à apprendre à manipuler la rotation des objets. La rotation est tout aussi cruciale pour le contrôle total des mouvements dans Unity, et comprendre comment l’appliquer correctement permettra de donner vie à vos objets de manière fluide et cohérente.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment utiliser Vector3 dans Unity?
Quelles sont les propriétés essentielles de Vector3?
Comment effectuer une translation de vecteur dans Unity?
Quel est le rôle de Time.deltaTime dans le déplacement d'objets?
Pourquoi la translation de vecteur est-elle importante dans Unity?
Conclusion
Avec la maîtrise de la translation de vecteur et des propriétés de Vector3 dans Unity, vous êtes prêt à enrichir vos projets de jeu. Quels autres aspects de la manipulation 3D êtes-vous prêt à explorer?