Catégories
Unity

Faire tomber un objet dans Unity

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.