Pour qu’un objet tombe dans Unity, on peut écrire un script qui va actualiser sa position pour simuler sa chute, mais Unity contient un moteur physique qui permet de faire ça et beaucoup plus, alors autant l’utiliser.
Composant Rigidbody
Pour qu’un objet soit soumis à la physique dans Unity, il faut lui ajouter le composant Rigidbody.
Il obtient une masse, est soumis à la gravité et réagit aux collisions avec les autres objets.
Le composant Rigidbody peut être configuré avec ses propriétés.
isKinematic
Pour déclencher la chute d’un objet, on peut agir sur la propriété isKinematic
. Lorsque isKinematic
vaut true
, l’objet n’est plus piloté par le moteur physique, mais par les scripts via le Transform.
Un objet pré-configuré avec isKinematic
activé ne bougera pas, mais il suffit de changer sa valeur pour qu’il soit à nouveau soumis à la physique et tombe.
void OnMouseDown () {
GetComponent<Rigidbody>().isKinematic = true;
}
useGravity
La proprité useGravity
permet aussi de faire tomber (ou pas) un objet.
Attention cependant, lorsque useGravity
est désactivé, si l’objet ne tombe pas, il est quand même soumis à la physique, comme s’il était dans l’espace. Une collision avec un autre objet peut le mettre en mouvement.