physics_joint_friction_create

摩擦关节与物理模拟中的所有其他关节稍有不同,因为创建的连接不会约束实例的位置或运动,而是约束其速度和旋转。这通过获取力和扭矩的最大输入值并将这些值应用到第二个装置来使速度和角动量下降到与第一个实例相同的值。因此,如果有一个固定实例和一个移动实例,然后使用摩擦关节将它们连接起来,则移动实例将逐渐减慢,直到它也是静止的。如果两个实例都在移动,则第二个实例的移动速度将被修改为与第一个实例的移动速度相匹配。

Friction joint illustration 与大多数其他关节一样,您提供了要连接在一起的实例,以及要在房间内创建关节的位置。然后提供最大力和最大扭矩 (方向摩擦和旋转摩擦),如果将 "col" 值设置为 true,则两个实例可以相互作用并发生碰撞,但是只有在它们发生碰撞事件时才会发生碰撞,但是如果设置为 false,则无论发生什么情况,它们都不会发生碰撞。

 

语法:

physics_joint_friction_create(inst1, inst2, anchor_x, anchor_y, max_force, max_torque, col)

参数类型描述
inst1Object Instance与关节连接的第一个实例
inst2Object Instance与关节连接的第二个实例
anchor_xReal游戏世界中关节的 X 坐标
anchor_yReal游戏世界中关节的 Y 坐标
max_forceReal将要施加的最大摩擦力
max_torqueReal将要施加的最大旋转力
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_friction_create(id, o_id, x, y, 10, 0.3, true);
physics_fixture_delete(mainFixture);

上述代码将创建一个装置,然后将其绑定到两个实例,然后使用摩擦关节连接两个实例。