거리 조인트 생성 (physics_joint_distance_create)
거리 조인트는 두 인스턴스 간의 거리를 일정하게 유지하는 가장 간단한 조인트 중 하나입니다. 거리 조인트를 지정할 때, 두 인스턴스는 이미 생성되어 있어야 하며, 각각의 조인트에 고정 장치가 할당되어 있어야 합니다. 그런 다음 방 좌표에서 두 개의 앵커 포인트를 정의합니다. 첫 번째 앵커 포인트는 인스턴스 1에 연결되고, 두 번째 앵커 포인트는 인스턴스 2에 연결됩니다. 이 두 포인트 간의 거리가 거리 제약의 길이를 나타냅니다.
아래 이미지는 이 작동 방식을 보여줍니다. 앵커 포인트는 방 좌표로 지정되므로, 특히 인스턴스가 조인트와 동시에 생성될 때는 주의가 필요합니다. 또한, 조인트는 인스턴스의 스프라이트 크기나 부착된 고정 장치의 크기와는 독립적으로 생성됩니다. 따라서 인스턴스의 원점이 아닌 다른 위치에서 거리 조인트를 생성하더라도 유효하며, 생성된 위치에 상대적으로 두 인스턴스를 제약합니다.
"col" 값을 true로 설정하면 두 인스턴스가 서로 상호작용하고 충돌할 수 있지만, 충돌 이벤트가 있어야만 충돌합니다. false로 설정하면 어떤 경우에도 충돌하지 않습니다.
문법
physics_joint_distance_create(inst1, inst2, w_anchor1_x, w_anchor1_y, w_anchor2_x, w_anchor2_y, col)
인수 설명
인수 | 타입 | 설명 |
---|---|---|
inst1 | Instance ID | 조인트에 연결할 첫 번째 인스턴스 |
inst2 | Instance ID | 조인트에 연결할 두 번째 인스턴스 |
w_anchor1_x | Real | 조인트의 첫 번째 x 좌표 (게임 월드 내) |
w_anchor1_y | Real | 조인트의 첫 번째 y 좌표 (게임 월드 내) |
w_anchor2_x | Real | 조인트의 두 번째 x 좌표 (게임 월드 내) |
w_anchor2_y | Real | 조인트의 두 번째 y 좌표 (게임 월드 내) |
col | Boolean | 두 인스턴스가 충돌할 수 있는지 여부 (true 또는 false) |
반환값
- Physics Joint ID
활용 예제
아래는 거리 조인트를 생성하는 몇 가지 예제 코드입니다.
예제 1: 기본 거리 조인트 생성
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_distance_create(id, o_id, x + 50, y, o_id.x - 50, o_id.y, true);
physics_fixture_delete(mainFixture);
예제 2: 두 인스턴스 간의 거리 조인트 설정
var fixture1, fixture2;
fixture1 = physics_fixture_create();
fixture2 = physics_fixture_create();
physics_fixture_set_box_shape(fixture1, 32, 32);
physics_fixture_set_box_shape(fixture2, 32, 32);
var instance1 = instance_create_layer(100, 100, "Instances", obj_Box);
var instance2 = instance_create_layer(200, 100, "Instances", obj_Box);
physics_fixture_bind(fixture1, instance1);
physics_fixture_bind(fixture2, instance2);
physics_joint_distance_create(instance1, instance2, 100, 100, 200, 100, false);
예제 3: 충돌 가능성이 있는 거리 조인트 생성
var fixtureA, fixtureB;
fixtureA = physics_fixture_create();
fixtureB = physics_fixture_create();
physics_fixture_set_circle_shape(fixtureA, 16);
physics_fixture_set_circle_shape(fixtureB, 16);
var objA = instance_create_layer(150, 150, "Instances", obj_Circle);
var objB = instance_create_layer(250, 150, "Instances", obj_Circle);
physics_fixture_bind(fixtureA, objA);
physics_fixture_bind(fixtureB, objB);
physics_joint_distance_create(objA, objB, 150, 150, 250, 150, true);
이 예제들은 거리 조인트를 활용하여 인스턴스 간의 거리를 제어하는 방법을 보여줍니다.