physics_joint_weld_create

焊接关节设计用于将两个固定装置连接在一起,形成牢固而灵活的焊接。焊接关节将允许在两个连接的固定装置之间弯曲,但没有例如与距离关节相关的拉伸,并且当在任何应力或载荷下时,总是试图"弹回"参考角。定义房间中应创建关节的点,以及希望关节始终尝试并保持的角度,如下图所示:

Weld joint illustration如您所见,锚点被指定为房间坐标,因此在定义它们时必须小心,尤其是如果实例与关节同时创建,而不是通过房间编辑器放置在房间中。您还应该意识到,关节的创建与实例的精灵大小或它们附着的装置的大小无关。因此,如果在实例原点以外的位置创建焊接关节,它仍然有效,并将相对于创建它的位置约束这两个实例。

由于焊接关节是柔性的,并且在任何应力下都会弯曲和弯曲,因此可以设置振荡频率 (以 Hz 为单位) 以及关节的阻尼比,以获得不同的效果-您可能需要使用这些值来微调它们,建议您从较小的值开始并增加它们,直到获得所需的效果。

如果将 "col" 值设置为 true,则两个实例可以相互作用并发生碰撞,但如果它们发生碰撞事件,则只能发生碰撞,但如果设置为 false,则无论发生什么情况,它们都不会发生碰撞。

 

语法:

physics_joint_weld_create(inst1, inst2, anchor_x, anchor_y, ref_angle, freq_hz, damping_ratio, col)

参数类型描述
inst1Object Instance与关节连接的第一个实例
inst2Object Instance与关节连接的第二个实例
anchor_xReal游戏世界中关节的 X 坐标
anchor_yReal游戏世界中关节的 Y 坐标
ref_angleReal要保持的关节角度
freq_hzReal这是关节的振荡频率,单位为赫兹
damping_ratioReal关节的阻尼比
colBoolean这两个实例是否可以碰撞 (true) 或不碰撞 (false)

 

返回:

Physics Joint ID

 

例子:

var i, fix, o_id, p_id;
p_id = noone;
o_id = noone;
fix = physics_fixture_create();
physics_fixture_set_box_shape(fix, 64, 32);
for (i = 0; i < 5; i++;)
{
    o_id = instance_create_layer(x + (128 * i), y, "Instances", obj_BridgePart);
    physics_fixture_bind(fix, o_id);
    if (i > 0 && i < 4)
    {
        physics_joint_weld_create(p_id, o_id, x + (128 * i) - 64, y, 0, 10, 12, true);
    }
    p_id = o_id;
}
physics-fixture_delete(fix);

上述代码将创建一个装置,然后使用循环创建多个实例,将装置绑定到每个新实例,然后使用焊接关节将它们全部连接在一起。最后从存储器中删除该装置。