1. Introduction
Dans Unity, il y a plusieurs façons de gérer le mouvement :
- En manipulant le transform du gameObject, par exemple le code ci-dessous va mouvoir le gameObject d'une unité sur l'axe X :
Code : Tout sélectionner
transform.position = new Vector3(transform.position.x + 1, transform.position.y, transform.position.z);
- En modifiant la vélocité de l'objet, comme tu l'as fait.
- En laissant le moteur physique s'en occuper, celle que je vais t'expliquer rapidement.
En gros, le moteur physique va calculer tous les mouvements en tenant compte des forces qui sont appliquées aux objets et des collision entre ces objets.
Dans une scène vide (caméra + lumière), place un simple cube 3D. Lance le jeu : il ne se passe rien. Sur ce même cube, ajoute (Add Component) un composant
RigidBody (attention pas celui prévu pour la 2D), et lance le jeu. Cette fois, le cube tombe. En ajoutant le composant Rigidbody, tu as indiqué à Unity (à la partie moteur physique) d'appliquer au cube les lois de la physique, et Unity applique au cube la
pesanteur, qui est une force exercée vers le bas.
Ouvre le composant Rigidbody, outre sa masse, il y a un booléen
UseGravity qui est coché. Décoche la case, relance le jeu : le cube ne tombe plus.
Dans la scène, place un plane (GameObject > 3D Object > Plane). Modifie position.y du cube de façon à ce que le cube soit au-dessus du plane. Lance le jeu : le cube est arrêté par le plane.
Sur le plane, repère le composant Mesh Collider, et désactive-le en décochant sa case. Lance le jeu : le cube tombe et traverse le plane.
De manière très simplifiée :
- pour être pris en compte par la physique, un gameObject doit avoir un Rigidbody.
- pour interagir entre eux (collisions, ...), les gameObjects doivent avoir des Colliders.