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
Defold підтримує з’єднання (joints) для 2D-фізики. З’єднання сполучає два об’єкти колізій (collision objects) за допомогою певного обмеження. Підтримуються такі типи з’єднань:
bodyB лінією на bodyA. Колісне з’єднання також забезпечує пружину підвіски. У Box2D його називають колісним з’єднанням (Wheel joint).Наразі з’єднання можна створювати лише програмно за допомогою physics.create_joint():
Підтримка створення з’єднань у редакторі запланована, але дату випуску ще не визначено.
-- 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 })
Наведений вище код створить фіксоване з’єднання з ідентифікатором my_test_joint між двома об’єктами колізій obj_a#collisionobject і obj_b#collisionobject. З’єднання кріпиться на 10 пікселів ліворуч від центра об’єкта колізій obj_a#collisionobject і на 20 пікселів вище від центра об’єкта колізій obj_b#collisionobject. Максимальна довжина з’єднання становить 20 пікселів.
З’єднання можна знищити за допомогою physics.destroy_joint():
-- destroy a joint previously connected to the first collision object
physics.destroy_joint("obj_a#collisionobject", "my_test_joint")
Властивості з’єднання можна прочитати за допомогою physics.get_joint_properties() і встановити за допомогою 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
Силу реакції та крутний момент, прикладені до з’єднання, можна прочитати за допомогою physics.get_joint_reaction_force() і physics.get_joint_reaction_torque().