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
Une articulation relie deux objets de collision au moyen d’une contrainte. Defold prend en charge les articulations en physique 2D et 3D, avec des API différentes.
Ce manuel décrit les articulations 2D exposées par le module physics. Depuis Defold 1.13.2, les projets 3D peuvent créer et contrôler des contraintes avec bullet3d.constraint, notamment des charnières, des glissières et des ressorts. Utilisez cette API avec des corps rigides obtenus via bullet3d.get_rigid_body().
Les types d’articulations pris en charge dans l’API 2D physics sont les suivants :
bodyB à se déplacer sur une ligne de bodyA. L’articulation de type roue fournit également un ressort de suspension. Dans Box2D, elle est appelée articulation de type roue (Wheel joint).Les articulations 2D décrites ici sont créées par programmation avec physics.create_joint() :
La prise en charge de la création d’articulations dans l’éditeur est prévue, mais aucune date de sortie n’a été fixée.
-- connect two collision objects with a fixed joint constraint (rope)
physics.create_joint(physics.JOINT_TYPE_FIXED, "obj_a#collisionobject", "my_test_joint", vmath.vector3(10, 0, 0), "obj_b#collisionobject", vmath.vector3(0, 20, 0), { max_length = 20 })
Le code ci-dessus crée une articulation fixe portant l’identifiant my_test_joint entre les deux objets de collision obj_a#collisionobject et obj_b#collisionobject. L’articulation est reliée à un point situé 10 pixels à droite du centre de l’objet de collision obj_a#collisionobject et à un point situé 20 pixels au-dessus du centre de l’objet de collision obj_b#collisionobject. La longueur maximale de l’articulation est de 20 pixels.
Vous pouvez détruire une articulation à l’aide de physics.destroy_joint() :
-- destroy a joint previously connected to the first collision object
physics.destroy_joint("obj_a#collisionobject", "my_test_joint")
Vous pouvez lire les propriétés d’une articulation à l’aide de physics.get_joint_properties() et les définir à l’aide de physics.set_joint_properties() :
function update(self, dt)
if self.accelerating then
local hinge_props = physics.get_joint_properties("obj_a#collisionobject", "my_hinge")
-- increase motor speed by 100 revolutions per second
hinge_props.motor_speed = hinge_props.motor_speed + 100 * 2 * math.pi * dt
physics.set_joint_properties("obj_a#collisionobject", "my_hinge", hinge_props)
end
end
Vous pouvez lire la force et le couple de réaction appliqués à une articulation à l’aide de physics.get_joint_reaction_force() et de physics.get_joint_reaction_torque().