This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Un objet de collision peut contenir plusieurs formes intégrées. En physique 3D, celles-ci peuvent inclure des enveloppes convexes et des maillages triangulés provenant de fichiers glTF ou GLB. Vous pouvez également utiliser une tilemap ou une ressource de forme convexe via la propriété Collision Shape de l’objet de collision.
Les formes primitives sont la boîte, la sphère et la capsule. Pour ajouter une forme primitive, faites un clic droit sur l’objet de collision et sélectionnez Add Shape :

Une boîte possède une position, une rotation et des dimensions (largeur, hauteur et profondeur) :

Une sphère possède une position, une rotation et un diamètre :

Une capsule possède une position, une rotation, un diamètre et une hauteur :

Les formes de capsule sont prises en charge uniquement avec la physique 3D (configurée dans la section Physics du fichier game.project).
Les formes complexes peuvent utiliser la géométrie d’une tilemap ou les données d’une enveloppe convexe. Depuis Defold 1.13.2, les objets de collision 3D peuvent également créer des enveloppes convexes et des formes de maillage triangulé à partir des maillages de scènes glTF ou GLB.
Utilisez une forme Hull pour une approximation convexe d’un maillage, ou une forme Mesh lorsque les collisions doivent suivre ses triangles, y compris les zones concaves comme les ouvertures dans la géométrie d’un niveau.
3D dans game.project.Le maillage sélectionné fournit sa géométrie locale ; les transformations des nœuds glTF ne sont pas appliquées. Les formes de collision Mesh sont prises en charge par le moteur physique Bullet 3D, y compris pour les objets de collision statiques et non statiques. Elles ne sont pas prises en charge par les moteurs physiques 2D.
La géométrie des maillages triangulés est accessible en lecture seule via les API de formes à l’exécution. Modifiez le maillage source et recréez un build pour changer ses triangles. Consultez Mise à l’échelle des formes de collision pour l’échelle de l’objet de jeu.
Defold propose une fonctionnalité qui permet de générer facilement des formes physiques pour la source de tuiles utilisée par une tilemap. Le manuel des sources de tuiles explique comment ajouter des groupes de collision à une source de tuiles et affecter des tuiles à ces groupes (exemple).
Pour ajouter des collisions à une tilemap :

Notez que la propriété Group n’est pas utilisée ici, car les groupes de collision sont définis dans la source de tuiles de la tilemap.
En physique 3D, vous pouvez créer une enveloppe convexe directement à partir d’un maillage avec le flux de travail de l’éditeur décrit ci-dessus. L’ancienne ressource .convexshape est également prise en charge et peut être créée à partir de points avec un éditeur externe :
.convexshape) à l’aide d’un éditeur externe.Le format de fichier d’enveloppe convexe utilise le même format de données que tous les autres fichiers Defold, à savoir le format texte protobuf. Une forme d’enveloppe convexe définit les points de l’enveloppe. En physique 2D, les points doivent être fournis dans le sens inverse des aiguilles d’une montre. Un nuage de points abstrait est utilisé en mode physique 3D. Exemple en 2D :
shape_type: TYPE_HULL
data: 200.000
data: 100.000
data: 0.0
data: 400.000
data: 100.000
data: 0.0
data: 400.000
data: 300.000
data: 0.0
data: 200.000
data: 300.000
data: 0.0
L’exemple ci-dessus définit les quatre coins d’un rectangle :
200x300 400x300
4---------3
| |
| |
| |
| |
1---------2
200x100 400x100
Plusieurs outils externes peuvent être utilisés pour créer des formes de collision :
L’objet de collision et ses formes héritent de l’échelle de l’objet de jeu. Pour désactiver ce comportement, décochez la case Allow Dynamic Transforms dans la section Physics de game.project. Notez que seule la mise à l’échelle uniforme est prise en charge et que la plus petite valeur d’échelle sera utilisée si l’échelle n’est pas uniforme.
Les formes primitives peuvent être redimensionnées à l’exécution avec physics.set_shape(). Cette fonction ne remplace ni les sommets des enveloppes convexes ni la géométrie des maillages triangulés. Exemple :
-- set capsule shape data
local capsule_data = {
type = physics.SHAPE_TYPE_CAPSULE,
diameter = 10,
height = 20,
}
physics.set_shape("#collisionobject", "my_capsule_shape", capsule_data)
-- set sphere shape data
local sphere_data = {
type = physics.SHAPE_TYPE_SPHERE,
diameter = 10,
}
physics.set_shape("#collisionobject", "my_sphere_shape", sphere_data)
-- set box shape data
local box_data = {
type = physics.SHAPE_TYPE_BOX,
dimensions = vmath.vector3(10, 10, 5),
}
physics.set_shape("#collisionobject", "my_box_shape", box_data)
Une forme du type approprié et portant l’identifiant spécifié doit déjà exister sur l’objet de collision.
Les formes de collision en physique 3D peuvent être tournées autour de tous les axes.
Les formes de collision en physique 2D ne peuvent être tournées qu’autour de l’axe z. Une rotation autour de l’axe x ou y produira des résultats incorrects et doit être évitée, même pour une rotation de 180 degrés destinée à retourner la forme suivant l’axe x ou y. Pour retourner une forme physique, il est recommandé d’utiliser physics.set_hlip(url, flip) et physics.set_vlip(url, flip).
Vous pouvez activer le débogage de la physique pour voir les formes de collision à l’exécution.