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 поддерживает сочленения для 2D-физики. Сочленение соединяет два объекта столкновения задействуя некоторые виды ограничителей. Поддерживаемые типы сочленений:
bodyB
перемещением вдоль линии на bodyA
. Также оно обеспечивает эффект пружинной подвески. В Box2D известно как Wheel joint.На данный момент сочленения могут быть созданы только программно вызовом physics.create_joint()
:
Поддержка создания сочленений в редакторе есть в планах, но дата релиза пока не обговорена.
-- соединить два объекта столкновения фиксированным ограничителем сочленения (веревка)
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()
:
-- уничтожить сочленение, ранее присоединенное к первому объекту столкновения
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")
-- увеличить скорость двигателя на 100 оборотов в секунду
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()
.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB