physics_fixture_bind_ext

一旦我们定义了我们的装置,它必须绑定到一个实例。这意味着其 属性 将传输到选定的实例, 而不是实际的装置本身 ,因此,如果一个装置都具有相同的属性,则可以将其绑定到多个实例。您可以为目标指定一个对象索引,当时房间中存在的所有实例都将收到装置属性 (但不是以后创建的对象的任何新实例),或者您可以使用特殊关键字 otherall。您甚至可以指定一个父对象,具有该父对象的所有子实例也将收到装置。将装置绑定到所需的所有实例后,如果不再需要,可以将其删除,并且具有该装置特性的实例将不会受到影响并保持这些特性。

通常,夹具将绑定到实例,其质心位于实例的原点,但这并不总是您所需要的,因此此功能还允许您偏移夹具所在的 x 和 y 位置受给定数量的约束 (如果您不需要,则使用 physical_fixture_bind 代替)。请务必注意,夹具只能支持 单个 偏移,因为 Box2D 不支持向单个夹具添加多个偏移。

Extended physics fixture binding example 该函数还将返回 绑定 固定装置 ( 不是固定装置本身 ) 的唯一 "id" 值,然后可使用该值从固定装置中移除 (" 取消绑定 ") 物理属性。使用函数 physical_remove_fixture 的实例。这允许您在实例中添加和删除物理属性,而无需销毁和重新创建对象。

注意 不再需要的装置应被删除,否则可能会导致内存泄漏,从而减慢游戏速度并最终崩溃。

 

语法:

physics_fixture_bind_ext(fixture, target, xoffset, yoffset)

参数类型描述
fixturePhysics Fixture ID要绑定的装置
targetObject Instance or Object Asset要接收装置的目标实例 (可以是实例 ID、对象 ID、otherall)
xoffsetReal沿 X 轴的偏移
yoffsetReal沿 Y 轴的偏移

 

返回:

Real

 

例子:

var fix, inst;
fix = physics_fixture_create();
physics_fixture_set_circle_shape(fix, 16);
physics_fixture_set_density(fix, 1.0);
inst = instance_create_layer(x, y, "Instances", genericBodyObject);
my_fix = physics_fixture_bind_ext(fix, inst, sprite_width / 2, -(sprite_height / 2));
physics_fixture_delete(fix);

上面的代码将创建一个装置并将其索引分配给变量 "fix"。然后定义装置的形状和密度,然后根据精灵的宽度和高度以偏移量将其绑定到实例。 限制 装置的索引存储在变量 "my_fix" 中。最后,装置本身被删除,以防止不再需要内存时发生泄漏。