move_contact_solid 함수 설명
move_contact_solid
함수는 코드가 실행되는 인스턴스를 지정된 방향으로 일정 픽셀만큼 이동시키는 기능을 제공합니다. 이때, 이동하는 동안 solid
플래그가 true
로 설정된 인스턴스와 충돌할 때까지 이동합니다. maxdist
인자는 -1 또는 0으로 설정할 수 있으며, 기본값은 1000픽셀입니다. 즉, GameMaker는 인스턴스를 최대 1000픽셀까지 계속 이동시킵니다.
문법
move_contact_solid( dir, maxdist );
인자 설명
인자 이름 | 타입 | 설명 |
---|---|---|
dir | 정수 | 이동할 방향을 나타냅니다. |
maxdist | 정수 | 객체가 이동할 수 있는 최대 거리입니다. (-1 또는 0은 기본값 1000픽셀) |
반환값
이 함수는 반환값이 없습니다.
예제 코드
아래 코드는 인스턴스 아래에 "obj_Floor"와의 충돌이 있는지 확인하고, 충돌이 없으면 인스턴스를 아래로 이동시킵니다. 충돌이 발생하거나 1000픽셀 이동할 때까지 계속 이동합니다.
if (!place_meeting(x, y + 1, obj_Floor)){
move_contact_solid(270, -1);
}
활용 예제
- 플랫폼 게임에서의 캐릭터 이동
- 캐릭터가 점프 후 바닥에 착지할 때, 바닥과의 충돌을 감지하여 자연스럽게 이동하도록 할 수 있습니다.
gml if (!place_meeting(x, y + 1, obj_Floor)) { move_contact_solid(270, -1); }
- 물체가 벽에 부딪힐 때
- 물체가 벽에 부딪히지 않도록 하여, 물체가 벽을 따라 미끄러지도록 만들 수 있습니다.
gml if (!place_meeting(x + 1, y, obj_Wall)) { move_contact_solid(0, -1); }
- 캐릭터가 장애물에 부딪힐 때
- 캐릭터가 장애물에 부딪히지 않도록 하여, 장애물과의 충돌을 피할 수 있습니다.
gml if (!place_meeting(x, y, obj_Obstacle)) { move_contact_solid(90, -1); }
- 자동으로 내려가는 물체
- 물체가 아래로 자동으로 떨어지도록 하여, 바닥에 닿을 때까지 계속 이동하게 할 수 있습니다.
gml move_contact_solid(270, -1);
- 상하 이동하는 NPC
- NPC가 특정 구역 내에서 상하로 이동하도록 설정할 수 있습니다.
gml if (!place_meeting(x, y + 1, obj_Floor)) { move_contact_solid(270, -1); }
이와 같이 move_contact_solid
함수는 다양한 상황에서 유용하게 사용될 수 있습니다.