physics_joint_pulley_create

滑轮关节是用来连接物理世界中的两个实例的,其方式是移动一个实例将直接影响另一个实例的运动。这些关节首先锚定在世界空间的两个点上,每个点都与一个实例的质心相连。这可以通过设置相对于实例原点的局部锚点 x/y 坐标来改变,也就是说,从实例到物理世界锚点的实际连接可以偏移到原点以外的地方。下面的图片说明了这一点。

Pulley joint illustration如果您查看 inst2,可以看到其本地锚点已偏移 20 像素到其原点的 " 左侧 "( 请记住!使用房间坐标定义世界定位点,而相对于实例的原点定义局部定位点)。也可以为滑轮关节指定一个比率,该比率指示一侧或另一侧移动得更快,值小于 1 会使第一个实例移动得更快 (例如,0.5 会使其移动得快一倍),值大于 1 会使第二个实例移动得更快 (例如,2 会使其移动得快一倍)。

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

 

语法:

physics_joint_pulley_create(inst1, inst2, w_anchor1_x, w_anchor1_y, w_anchor2_x, w_anchor2_y, l_anchor1_x, l_anchor1_y, l_anchor2_x, l_anchor2_y, ratio, col)

参数类型描述
inst1Object Instance与关节连接的第一个实例
inst2Object Instance与关节连接的第二个实例
w_anchor1_xReal游戏世界中关节第一部分定位的 X 坐标
w_anchor1_yReal游戏世界中关节第一部分定位的 Y 坐标
w_anchor2_xReal游戏世界中关节第二部分定位的 X 坐标
w_anchor2_yReal游戏世界中关节第二部分定位的 Y 坐标
l_anchor1_xReal关节 1 定位到第一个实例的局部 X 坐标
l_anchor1_yReal关节 1 定位到第一个实例的局部 Y 坐标
l_anchor2_xReal关节 2 定位到第二个实例的局部 X 坐标
l_anchor2_yReal关节 2 定位到第二个实例的局部 Y 坐标
ratioReal设置两个实例之间的速度比率
colBoolean这两个实例是否可以碰撞 (true) 或不碰撞 (false)

 

返回:

Physics Joint ID

 

例子:

var t_fix, inst1, inst2;
t_fix = physics_fixture_create();
physics_fixture_set_circle_shape(t_fix, 20);
inst1 = instance_create_layer(150, room_height - 90, "Instances", obj_Block);
inst2 = instance_create_layer(300, room_height - 90, "Instances", obj_block);
physics_fixture_bind(t_fix, inst1);
physics_fixture_bind(t_fix, inst2);
physics_joint_pulley_create(inst1, inst2, 150, room_height - 140, 300, room_height - 140, 0, 0, 0, 0, 2, 0);
physics_fixture_delete(t_fix);

上述代码创建并定义了一个新的装置,创建了两个 "obj_Block" 实例,然后将此装置绑定为两个。然后,它继续在这些实例之间定义一个滑轮关节,关节没有偏移,比率为 2:1( 意味着 inst2 将移动得更快)。滑轮中的两个实例之间不会发生碰撞。