Game Maker Language リファレンス > 組み込み関数 用途別 > 物理エンジン > physics_fixture_bind()
フィクスチャを定義したら、インスタンスにバインドする必要があります。つまり、そのプロパティは実際のフィクスチャ自体ではなく、選択したインスタンスに転送されるため、すべてが同じプロパティを持つ場合は、1つのフィクスチャを複数のインスタンスにバインドできます。ターゲットのオブジェクトインデックスを指定すると、その時点で部屋に存在するすべてのインスタンスがそのフィクスチャプロパティを受け取ります(ただし、後で作成されるオブジェクトの新しいインスタンスは受け取りません)。または、特別なキーワードother andallを使用できます。親オブジェクトを指定することもでき、その親を持つすべての子インスタンスもフィクスチャを受け取ります。フィクスチャが必要なすべてのインスタンスにバインドされると、不要になった場合は削除でき、そのフィクスチャプロパティを持つインスタンスは影響を受けず、それらのプロパティを維持します。
フィクスチャは、重心がインスタンスの原点に配置された状態でインスタンスにバインドされ、ポリゴンフィクスチャは、原点に対するポイントの位置に基づいてバインドされます。フィクスチャを原点以外のポイントにバインドする必要がある場合は、physics_fixture_bind_ext() を使用する必要があります。
この関数は、バインドされたフィクスチャ(フィクスチャ自体ではなく)の一意の「id」値も返します。この値を使用して、関数 physics_remove_fixture() を使用してインスタンスから物理プロパティを削除(「バインド解除」)できます。 これにより、オブジェクトを破棄および再作成することなく、インスタンスに物理プロパティを追加および削除できます。
physics_fixture_bind(fixture, target)
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(fix, inst); physics_fixture_delete(fix);
上記のコードはフィクスチャを作成し、そのインデックスを変数「fix」に割り当てます。 次に、フィクスチャの形状と密度を定義してから、変数「my_fix」に格納されているバインドされたフィクスチャのインデックスを使用して作成されたインスタンスに バインド します。 最後に、フィクスチャは不要になったため、メモリリークを防ぐために削除されます。