프리즘 조인트 생성
프리즘 조인트는 회전 조인트와 유사하게 하나의 자유도를 가지지만, 회전이 아닌 특정 축에 대한 방향성을 가지고 있습니다. 이 조인트는 회전을 방지합니다. 아래 이미지를 통해 작동 방식을 시각화할 수 있습니다.
작동 원리
두 개의 인스턴스가 앵커 포인트에서 연결되어 있으며, 움직임을 위한 축은 두 개의 w_axis x/y 좌표에 의해 정의됩니다. 이 좌표는 물리 세계의 (0,0) 좌표에 상대적입니다. 예를 들어, x 성분이 0이고 y 성분이 1인 경우 (0,1) 조인트는 수직 프리즘 조인트가 됩니다. 이 조인트는 스프링이나 피스톤처럼 이 축에 따라만 움직일 수 있습니다.
하한 또는 상한 변환 제한을 설정하면 이 축을 따라 움직일 수 있는 범위를 제한할 수 있습니다. 0 위치는 w_anchor x/y로 정의한 정확한 지점이며, 음수 값은 그 지점의 "왼쪽"으로, 양수 값은 "오른쪽"으로 이동합니다.
모터 설정
조인트를 모터가 있는 것으로 정의할 수도 있습니다. 이는 충돌의 영향을 받지 않을 때 조인트가 축을 따라 움직이는 방향을 의미합니다. 이 방향은 모터 속도로 정의되며, 양수는 축 좌표 쪽("오른쪽")으로, 음수는 앵커 포인트 쪽("왼쪽")으로 이동합니다. "max_motor_force" 인자는 움직임의 속도를 제한하여 지속적으로 가속하는 모터를 방지하고, 충돌이 움직임에 미치는 영향을 제한합니다. 이 방법으로 조인트 마찰을 시뮬레이션할 수 있습니다. 조인트 속도를 0으로 설정하고 최대 힘을 작은 값으로 설정하면, 모터는 조인트가 움직이지 않도록 하려 하지만, 상당한 하중에는 저항합니다.
모든 조인트와 마찬가지로 "col" 값을 true로 설정하면 두 인스턴스가 서로 상호작용하고 충돌할 수 있지만, 충돌 이벤트가 있어야만 가능합니다. false로 설정하면 어떤 경우에도 충돌하지 않습니다.
문법
physics_joint_prismatic_create(inst1, inst2, w_anchor_x, w_anchor_y, w_axis_x, w_axis_y, lower_trans_limit, upper_trans_limit, limit, max_motor_force, motor_speed, motor, col)
인자 설명
인자 이름 | 타입 | 설명 |
---|---|---|
inst1 | Instance ID | 조인트와 연결할 첫 번째 인스턴스 |
inst2 | Instance ID | 조인트와 연결할 두 번째 인스턴스 |
w_anchor_x | Real | 조인트가 고정된 x 좌표, 게임 세계 내에서 |
w_anchor_y | Real | 조인트가 고정된 y 좌표, 게임 세계 내에서 |
w_axis_x | Real | 축 벡터의 x 성분 |
w_axis_y | Real | 축 벡터의 y 성분 |
lower_trans_limit | Real | 조인트 움직임의 하한 제한 |
upper_trans_limit | Real | 조인트 움직임의 상한 제한 |
limit | Boolean | 조인트 움직임을 제한할지 여부 (true) 또는 제한하지 않을지 여부 (false) |
max_motor_force | Real | 모터의 최대 움직임 속도 |
motor_speed | Real | 모터가 움직여야 하는 속도 |
motor | Boolean | 모터를 활성화할지 여부 (true) 또는 비활성화할지 여부 (false) |
col | Boolean | 두 인스턴스가 충돌할 수 있는지 여부 (true) 또는 충돌하지 않을지 여부 (false) |
예제 코드
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 + 25, y, "Instances", obj_Piston);
physics_fixture_bind(mainFixture, id);
physics_fixture_bind(mainFixture, o_id);
physics_joint_prismatic_create(id, o_id, x, y, 0, 10, 0, 0, 0, 5, 0, 1, 1);
physics_fixture_delete(mainFixture);
위 코드는 새로운 피처를 생성하고 정의한 후 "obj_Piston"의 인스턴스를 생성하여 두 객체에 생성된 피처를 바인딩합니다. 그런 다음 프리즘 조인트를 사용하여 두 인스턴스를 연결하며, 앵커 위치는 첫 번째 인스턴스의 x/y 좌표와 동일하고, 축은 x/y 위치와 축 x/y의 벡터로 형성됩니다 (이 경우 0,10, 즉 "아래"). 이 축을 따라 움직일 수 있는 제한은 없지만, 조인트 마찰을 시뮬레이션하기 위해 0 속도와 최대 힘 5를 가진 모터를 추가했습니다.