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 obsługuje łączenia w fizyce 2D. Łączenie łączy dwa obiekty kolizji za pomocą określonego ograniczenia. Obsługiwane typy łączeń to:
bodyB do linii na bodyA. Zapewnia też sprężynę zawieszenia. W Box2D odpowiada Wheel joint.Łączenia można obecnie tworzyć tylko programowo za pomocą physics.create_joint():
Obsługa tworzenia łączeń w edytorze jest planowana, ale nie ustalono jeszcze daty wydania.
-- połącz dwa obiekty kolizji za pomocą stałego ograniczenia łączenia (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 })
Powyższy przykład tworzy łączenie typu Fixed o id my_test_joint pomiędzy obiektami kolizji obj_a#collisionobject i obj_b#collisionobject. Łączenie jest umieszczone 10 pikseli na lewo od środka obj_a#collisionobject i 20 pikseli nad środkiem obj_b#collisionobject. Maksymalna długość łączenia wynosi 20 pikseli.
Łączenie można zniszczyć za pomocą physics.destroy_joint():
-- zniszcz łączenie wcześniej podłączone do pierwszego obiektu kolizji
physics.destroy_joint("obj_a#collisionobject", "my_test_joint")
Właściwości łączenia można odczytać przez physics.get_joint_properties(), a ustawić przez physics.set_joint_properties():
function update(self, dt)
if self.accelerating then
local hinge_props = physics.get_joint_properties("obj_a#collisionobject", "my_hinge")
-- zwiększ prędkość motoru o 100 obrotów na sekundę
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
Siłę reakcji i moment reakcji działające na łączenie można odczytać funkcjami physics.get_joint_reaction_force() oraz physics.get_joint_reaction_torque().