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 composant (component) de collision peut utiliser plusieurs formes primitives ou une seule forme complexe.
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).
Une forme complexe peut être créée à partir d’un composant tilemap ou d’une forme d’enveloppe convexe.
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.
Defold propose une fonctionnalité qui permet de créer une forme d’enveloppe convexe à partir de trois points ou plus.
.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 d’un objet de collision peuvent être redimensionnées à l’exécution à l’aide de physics.set_shape(). 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.