GameMaker Studio 2 utilise la bibliothèque de physique de corps rigide Box2D, et en tant que telle ne permet pas la physique du corps mou. Cependant, l'extension Liquid Fun ajoute des particules au système physique, ce qui permet la création de corps mou simulés en utilisant la physique du corps rigide. Fondamentalement, vous pouvez créer une forme de particules qui maintiennent la cohésion et ainsi simuler un corps entier, ce qui, en raison de l'interaction des particules, donne l'impression d'un corps mou. Vous pouvez également utiliser les particules de physique pour simuler des liquides et d'autres systèmes physiques basés sur les particules.
Les sections suivantes sont toutes liées à l'utilisation de particules de physique pour créer des grippes (corps mou) et d'autres effets:
Avant de commencer à créer vos particules de la physique, vous devez définir les propriétés de la physique de base pour eux, comme vous le feriez d' un appareil de la physique régulière. Notez cependant que la définition de ces propriétés affectera toutes les particules créées précédemment ainsi que toutes les nouvelles particules que vous créez, de sorte que vous n'utiliserez normalement ces fonctions qu'au début du jeu ou du niveau. Cependant, il existe des fonctions spécifiques pour définir les indicateurs de particules pour les particules individuelles (et les groupes de particules) qui vont changer leurs propriétés comme "bounciness" ou "viscosité", vous permettant de créer différents types de particules dans les limites de ces paramètres globaux.
Les fonctions suivantes sont disponibles pour le paramétrage et l'obtention des données globales du système de particules:
- physique_particle_count
- physics_particle_group_count
- physique_particle_set_max_count
- physics_particle_set_radius
- physics_particle_set_density
- physics_particle_set_damping
- physics_particle_set_gravity_scale
- physics_particle_get_max_count
- physics_particle_get_radius
- physics_particle_get_density
- physics_particle_get_damping
- physics_particle_get_gravity_scale
Vous disposez également des fonctions suivantes pour définir des indicateurs sur des particules individuelles (ou des groupes de particules), ainsi que pour obtenir des informations, telles que la position ou la couleur, à partir d'une seule particule ou d'un seul groupe:
- physics_particle_set_flags
- physics_particle_set_category_flags
- physics_particle_set_group_flags
- physics_particle_get_group_flags
- physics_particle_group_get_inertia
- physics_particle_group_get_centre_x
- physics_particle_group_get_centre_y
- physics_particle_group_get_vel_x
- physics_particle_group_get_vel_y
- physics_particle_group_get_ang_vel
- physics_particle_group_get_x
- physics_particle_group_get_y
- physics_particle_group_get_angle
- physics_particle_get_data
- physics_particle_get_data_particle
- physics_particle_group_get_data
Vous pouvez créer des particules de deux façons - individuellement ou en groupe. Les particules individuelles se comportent exactement comme défini par les paramètres globaux et les indicateurs définis lors de leur création, mais les groupes de particules peuvent présenter des comportements différents en fonction de leurs indicateurs de groupe. Ces indicateurs de groupe peuvent être définis sur des valeurs différentes pour donner au groupe des propriétés différentes, telles que la pénétration et la rigidité.
Les fonctions suivantes sont disponibles pour créer des particules:
Non seulement vous pouvez créer des particules, mais vous pouvez également les supprimer, individuellement ou dans une région. Les fonctions suivantes sont disponibles pour supprimer des particules du système:
Sauf si vous avez activé le dessin de débogage en utilisant physics_draw_debug(), vous ne verrez aucune particule sur l'écran lorsque vous les créez. Par conséquent, pour réellement voir les particules, vous devez les dessiner à l'écran dans l' événement Draw d'une instance en utilisant les fonctions suivantes (notez que vous pouvez également les dessiner en utilisant draw_sprite fonctions si vous obtenez les données pour chaque particule en utilisant la fonction physics_particle_get_data ):