Defold 支持物理关节. 一个关键基于某种限制连接两个物体. 支持的关节类型如下:
目前只能使用 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 })
上述代码创建了一个固定关节, 其id为 my_test_joint
, 连接了两个物体 obj_a#collisionobject
与 obj_b#collisionobject
. 关节位于 obj_a#collisionobject
偏左10像素, obj_b#collisionobject
偏上20像素的位置上. 设定的最大距离是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