physics_joint_rope_create

绳索关节是用于连接两个要保持恒定距离的实例的连接,无论其他力作用在这两个实例上。使用距离关节时,如果关节上的应力过大,则两个固定装置将分离并表现出奇怪的 " 关节拉伸",但绳索关节不会执行此操作,并且不会拉伸超过最大定义长度。创建绳索关节时,应该已经创建这两个实例并指定了装置,然后在房间坐标中定义两个锚点。第一个锚点连接到实例 1,第二个锚点连接到实例 2,距离和 maxlength 参数设置关节上的最大长度约束。下图显示了此函数的工作原理:

Rope joint illustration 如您所见,锚点被指定为房间坐标,因此在定义它们时必须小心,尤其是如果实例与关节同时创建,而不是通过房间编辑器放置在房间中。您还应该意识到,关节的创建与实例的精灵大小或它们附着的装置的大小无关。因此,如果在实例原点以外的位置创建绳索关节,它仍然有效,并将相对于创建它的位置约束这两个实例。如果将 "col" 值设置为 true,则两个实例可以相互作用并发生碰撞,但如果它们发生碰撞事件,则 只能发生碰撞,但如果设置为 false,则无论发生什么情况,它们都不会发生碰撞。

 

语法:

physics_joint_rope_create(inst1, inst2, w_anchor1_x, w_anchor1_y, w_anchor2_x, w_anchor2_y, maxlength, col)

参数类型描述
inst1Object Instance与关节连接的第一个实例
inst2Object Instance与关节连接的第二个实例
w_anchor1_xReal游戏世界中关节的第一个 X 坐标
w_anchor1_yReal游戏世界中关节的第一个 Y 坐标
w_anchor2_xReal游戏世界中关节的第二个 X 坐标
w_anchor2_yReal游戏世界中关节的第二个 Y 坐标
maxlengthReal关节可以"拉伸"的最大长度
colBoolean这两个实例是否可以碰撞 (true) 或不碰撞 (false)

 

返回:

Physics Joint ID

 

例子:

var mainFixture, o_id;
mainFixture = physics_fixture_create();
physics_fixture_set_circle_shape(mainFixture, sprite_get_width(sprite_index) / 2);
o_id=instance_create_layer(x+300, y, "Instances", obj_Rudder);
physics_fixture_bind(mainFixture, id);
physics_fixture_bind(mainFixture, o_id);
physics_joint_rope_create(id, o_id, x + 50, y, o_id.x - 50, o_id.y, 300, 0);
physics_fixture_delete(mainFixture);

上述代码创建并定义了一个新的装置,然后创建了一个 "obj_Rudder" 的实例。然后将装置指定给运行代码的实例以及新创建的实例,并在它们之间创建绳索关节。最后,由于不再需要该装置,因此将其删除。