Voici un tutoriel de base sur l’utilisation des Rigid Body et des Physics Materials afin de faire tomber et rebondir des objets dans nos projets Unity.


La version vidéo de ce tutoriel n’est actuellement pas disponible dans cette langue.


Transcription de la vidéo

Bonjour à tous !

Voici un tutoriel de base sur l’utilisation des Rigid Body et des Physics Materials afin de faire tomber et rebondir des objets dans nos projets Unity.

Unity fournit un moteur de simulation physique, mais pour accéder à ces fonctionnalités, il est nécessaire d’utiliser quelques composants, comme Rigid Body et Colliders, ainsi que d’autres éléments.

Cela s’explique par le fait que la simulation physique est coûteuse en calcul ; par défaut, les objets ne participent donc pas à celle-ci. C’est à nous de préciser si et comment un objet doit se comporter physiquement.

Très bien, commençons.

Je configure une scène simple dans Unity avec un Cube servant de sol et un modèle de ballon de basket.

Nous remarquons immédiatement que l’objet Cube, qui est un objet natif de Unity, possède déjà un composant Box Collider, tandis que mon modèle 3D, que j’ai créé à partir d’un fichier externe, ne possède aucun composant Collider. Nous y reviendrons plus tard.

J’ai positionné le modèle du ballon juste au-dessus du Cube, à une certaine distance, mais lorsque j’appuie sur le bouton Play, je remarque immédiatement que la balle ne tombe pas.

Pour que la balle participe à la simulation physique de la scène, il suffit de lui ajouter un composant Rigid Body, que l’on peut facilement ajouter dans l’Inspector de l’objet.

Dans l’onglet du composant, nous remarquons certaines fonctionnalités intéressantes, notamment la masse, que nous pouvons laisser telle quelle pour cet exemple, et la case Use Gravity, cochée par défaut. Nous pouvons donc lancer le jeu et constater que, cette fois, la balle tombe.

Cependant, elle traverse le cube situé en dessous et tombe dans le vide.

On pourrait penser à ajouter également un composant Rigid Body, éventuellement sans gravité, au Cube sous-jacent afin que les deux objets participent à la simulation physique. Toutefois, on peut vérifier immédiatement que cette hypothèse ne résout pas le problème. Supprimez donc le Rigid Body du Cube pour éviter toute confusion.

En résumé, la balle traverse le Cube, alors que le Cube possède un Box Collider et devrait donc détecter la collision.

Le fait est que le modèle du ballon ne possède pas son propre Collider. Nous devons donc lui en ajouter un dans l’Inspector. Étant donné que le ballon a une forme sphérique, nous choisissons un Sphere Collider pour cet objet.

En lançant maintenant la simulation, nous verrons la balle tomber sur le Cube et rester immobile dessus.

Gardez donc à l’esprit que le Cube, et plus généralement tout objet de la scène qui interagit avec la balle, doit posséder son propre Collider.

Pour résumer : pour interagir entre eux, deux objets de la scène doivent tous deux posséder des Colliders, sinon ils se comporteront comme des fantômes. De plus, pour participer à la simulation physique, et donc être affecté par la gravité et d’autres forces, un objet doit également posséder un composant Rigid Body.

Cependant, le résultat obtenu jusqu’à présent n’est pas satisfaisant : la balle tombe et heurte le cube sous-jacent, mais elle ne rebondit pas.

Les propriétés du matériau d’un objet ne doivent pas être assignées au Rigid Body, mais au Collider. Ces propriétés concernent tout objet de la scène, pas seulement ceux qui participent à la simulation physique. Nous devons donc les définir dans l’onglet du Collider.

Dans cet onglet, nous trouvons un champ appelé Material, défini sur None par défaut, ce qui indique que nous devons lui fournir un objet Physic Material.

Ajoutons donc un objet Physic Material dans le Project. Attention : il s’agit bien de Physic Material, et non simplement de Material, qui concerne l’aspect visuel de l’objet.

Nous assignons ensuite ce nouveau Physic Material au Sphere Collider du ballon, nous appuyons sur Play et nous constatons que la balle ne rebondit toujours pas.

En effet, par défaut, la valeur de Bounciness d’un nouveau Physic Material est définie sur 0, comme nous pouvons le voir en sélectionnant cet objet et en observant ses propriétés dans l’Inspector.

Le Physic Material possède deux propriétés principales : Bounciness et Friction, que l’on peut ajuster pour créer un comportement de rebond plus ou moins réaliste. Par exemple, augmenter la valeur de Bounciness accroît la force du rebond, tandis qu’augmenter la friction réduit la distance parcourue après chaque rebond.

Essayons donc de définir Bounciness à 1, qui est la valeur maximale pour ce champ, puis lançons le jeu : cette fois, la balle rebondit quelques fois avant de s’arrêter.

Le comportement est réaliste, mais comment faire rebondir la balle davantage ?

Nous pouvons agir, par exemple, sur les paramètres de Friction et surtout sur les deux paramètres Combine. Ces paramètres déterminent la manière dont les propriétés physiques de deux objets sont combinées lorsqu’ils entrent en contact.

La valeur par défaut de Bounce Combine est Average. Cela signifie qu’une moyenne sera effectuée entre le ballon, pour lequel nous avons défini Bounciness à 1, et le Cube sous-jacent, qui ne possède pas de Physic Material et sera donc considéré par Unity comme ayant une valeur de 0. La valeur finale de rebond sera donc 0,5.

Si nous modifions Bounce Combine en choisissant Maximum, la valeur effective de Bounciness sera alors 1 et la balle rebondira beaucoup plus.

Cependant, le problème est qu’elle continuera alors à rebondir davantage.

C’est un comportement étrange. Apparemment, pour obtenir des rebonds constants, la valeur de Bounciness doit être de 0,965. Ne me demandez pas pourquoi.

Bien entendu, lors de la simulation des rebonds, la surface est également importante. Nous devons donc attribuer un Physic Material au Cube, et il en va de même pour les sols, les murs et d’autres objets constitués de matériaux différents et possédant donc des propriétés physiques différentes, puis définir sa valeur de Bounciness de manière appropriée.

Mais je vous laisse expérimenter : essayez différentes combinaisons avec diverses valeurs de Bounciness, de Friction et de Combine.

C’est tout pour ce tutoriel. À 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