물리 피xture 포인트 추가하기
physics_fixture_add_point
함수는 이전에 physics_fixture_set_polygon_shape
또는 physics_fixture_set_chain_shape
함수를 사용하여 설정된 피xture의 다각형 포인트를 정의합니다. 이 함수는 다음과 같은 방식으로 사용됩니다.
다각형 모양
다각형 모양의 경우, 포인트는 피xture의 원점에 상대적입니다. x/y 축의 0,0 위치가 중심이며, 이후 좌표는 GameMaker에서 일반적으로 계산됩니다. 아래 이미지를 통해 이 과정을 시각화할 수 있습니다.
좌표 | 설명 |
---|---|
(0, 0) | 피xture의 중심 |
(+x, +y) | 오른쪽 및 아래 방향 |
(-x, -y) | 위쪽 및 왼쪽 방향 |
간단한 볼록 다각형은 이 방법으로 모델링할 수 있지만, 현재 오목 다각형은 지원되지 않습니다. 다각형을 닫으려면 피xture를 인스턴스에 바인딩해야 합니다. 또한, 피xture를 인스턴스에 바인딩하기 전에 최소한 세 개의 포인트를 정의해야 하며, 그렇지 않으면 오류가 발생합니다. 이전에 다각형 모양이 설정되지 않은 피xture에 포인트를 추가하면 오류가 발생합니다. 피xture에 허용되는 최대 포인트 수는 8개입니다.
체인 모양
체인 모양은 단순히 연결된 엣지 모양의 시리즈입니다. 이 함수는 엣지를 연결하기 위한 "연결" 포인트를 설정합니다. 따라서 피xture를 인스턴스에 바인딩하기 전에 최소한 두 개의 포인트를 정의해야 하며, 그렇지 않으면 오류가 발생합니다. 그러나 다각형과 달리 최대 8개 포인트에 제한되지 않으며, 체인을 만들기 위해 필요한 만큼 포인트를 추가할 수 있습니다. 포인트는 인스턴스에 상대적이지 않고 실제 방 좌표로 정의됩니다.
문법
physics_fixture_add_point(fixture, xpos, ypos)
인수 설명
인수 | 타입 | 설명 |
---|---|---|
fixture | Physics Fixture ID | 피xture의 인덱스 |
xpos | Real | 포인트의 x 위치 (다각형 모양의 경우 피xture 원점에 상대적) |
ypos | Real | 포인트의 y 위치 (다각형 모양의 경우 피xture 원점에 상대적) |
반환값
N/A
예제 코드
다각형 모양을 설정하고 포인트를 추가하는 예제:
physics_fixture_set_polygon_shape(fix_Ship);
physics_fixture_add_point(fix_Ship, 0, 0);
physics_fixture_add_point(fix_Ship, -40, 100);
physics_fixture_add_point(fix_Ship, 40, 100);
위 코드는 "fix_Ship" 변수에 인덱스된 피xture에 다각형 모양을 적용하고, 삼각형 모양을 만들기 위해 세 개의 포인트를 정의합니다.
활용 예제
- 사각형 모양 만들기
gml physics_fixture_set_polygon_shape(fix_Rectangle); physics_fixture_add_point(fix_Rectangle, -50, -50); physics_fixture_add_point(fix_Rectangle, 50, -50); physics_fixture_add_point(fix_Rectangle, 50, 50); physics_fixture_add_point(fix_Rectangle, -50, 50);
- 체인 형태의 엣지 만들기
gml physics_fixture_set_chain_shape(fix_Chain); physics_fixture_add_point(fix_Chain, 0, 0); physics_fixture_add_point(fix_Chain, 100, 0); physics_fixture_add_point(fix_Chain, 100, 100);
- 복잡한 다각형 만들기
gml physics_fixture_set_polygon_shape(fix_Complex); physics_fixture_add_point(fix_Complex, 0, 0); physics_fixture_add_point(fix_Complex, -30, 50); physics_fixture_add_point(fix_Complex, 30, 50); physics_fixture_add_point(fix_Complex, 60, 0); physics_fixture_add_point(fix_Complex, 30, -50); physics_fixture_add_point(fix_Complex, -30, -50);
이와 같은 방식으로 다양한 형태의 물리적 피xture를 생성하고 활용할 수 있습니다.