Découvrez le composant essentiel au développement de jeux vidéo : Rigidbody !
Bonjour à tou-te-s, ici Key en direct de MYG ! Aujourd’hui, nous allons découvrir l’un des composants fondamentaux du développement dans les jeux vidéos, le composant Rigidbody !
Rigidbody ? Qu’est-ce que c’est ?
Comme dit plus haut, Rigidbody est un component (ou composant en français) permettant d’appliquer des propriétés physiques à un GameObject. Par exemple, lui appliquer une gravité, une masse, contrôler sa résistance à l’air etc.
Rigidbody va nous servir à bichonner la physique de nos GameObjects dans notre scène.
Cela dit, ne vous inquiétez pas, pas besoin d’être physicien-ne pour utiliser Rigidbody, vous saurez obtenir une physique satisfaisante sans formules mathématiques poussées, je vous le garantis !
Dans ce tuto, nous allons nous amuser avec la physique que l’on peut insuffler à des GameObject !
Mise en place de la scène !
Comme d’habitude, ouvrez un nouveau projet Unity (pour ma part, j’utilise la version 2020.3.9f1 LTS), nommez-le comme vous le désirez et placez-y un nouveau plane comme ci-dessous !
Personnellement je l’ai appelé “Ground” (ou “sol” en français), histoire de dire que c’est là-dessus que vont se passer nos expériences !
Ensuite, créez une sphère et un cube que vous placerez au-dessus du plane précédemment créé comme il suit.
Nous allons ajouter également, à la racine du dossier “Asset”, un dossier “Materials”, afin d’y créer des materials respectifs pour le plane, le cube et la sphere.
Personnellement, mon plane sera vert, mon cube rouge et ma sphere sera bleue, vous êtes libres de choisir les couleurs qui vous plaisent le plus.
Comment se servir de Rigidbody ?
Rien de plus simple !
Pour faire cela, il vous faudra sélectionner vos GameObjects cube et sphere et leur ajouter le component nommé Rigidbody.
Remarque : Comme vous l’aurez remarqué, lorsque vous chercher le component Rigidbody, vous avez l’option Rigidbody 2D qui apparaît. Evidemment, c’est le Rigidbody simple dont nous nous servons ici, mais Unity possède des components qui ont un équivalent en 2D. Dans ce genre de cas, le component précisé 2D est pour des éléments 2D et celui où rien n'est précisé est pour les éléments en 3D.
Si vous vous amusez à lancer “Play” sur votre scène, vous verrez vite vos GameObjects tomber lourdement sur votre plane.
Sans le component Rigidbody, rien de tout cela ne pourrait être possible. Votre cube et votre sphere sont impactés par la gravité appliquée par défaut par le component. Les deux GameObjects sont arrêtés par le plane parce que ce dernier a un MeshCollider (ou grossièrement, une “hitbox”, une zone de détection). Si nous retirions le MeshCollider, les GameObjects passeraient à travers le plane comme s’il n’existait pas.
Le component Rigidbody offre beaucoup d’attributs différents à manipuler. Vous y trouverez notamment les options suivantes :
Mass : C’est ce qu’on l’appelle vulgairement, le “poids”. C’est la force appliquée sur un autre GameObject avec un Rigidbody, par abus de langage, on appelle ça le “poids”, mais le terme exact est “masse”.
Remarque : Sur la vidéo ci-dessus, on peut observer que lorsque la différence de Mass est trop grande et que l’on essaie de pousser un GameObject avec un autre, celui avec la Mass la plus faible peut traverser l’autre. C’est un cas que l’on peut observer dans divers Speed Runs de jeux vidéos, notamment grâce à la vitesse accumulée.
Drag : C’est la vitesse de chute, plus cette valeur est élevée, plus le GameObject effectuera une chute lente.
Angular Drag : C’est la vitesse de rotation, tout comme l’attribut Drag, plus cette valeur est grande, plus la vitesse de rotation est basse.
Use Gravity : Définit si le GameObject est affecté par la gravité.
Is Kinematic : Définit si le GameObject est static ou dynamique. Un GameObject static va uniquement appliquer des effets physiques aux autres GameObjects ayant un Rigidbody. Un GameObject dynamique va recevoir et appliquer des effets physiques autres GameObjects ayant un Rigidbody. Si l’attribut Is Kinematic est actif, dans ce cas, le GameObject en question appliquera ses propriétés physiques aux GameObjects entrant en contact avec, mais n’en recevra pas.
Remarque : Cela peut être difficile à comprendre, mais l’utilité de l’attribut Is Kinematic est surtout de pouvoir avoir des GameObjects qui n’ont aucun intérêt à être affecté par la physique des autres GameObjects mais doit avoir un impact sur d'autres. Comme un mur dans jeu, ou une arme tenue par un personnage ou encore une plateforme par exemple.
Et voilà ! C’est tout pour aujourd’hui.
J’espère que ce tutoriel vous aura plu et qu’il vous aura été utile !
A très bientôt !