move_contact_all 함수 설명
move_contact_all
함수는 코드가 실행되는 인스턴스를 지정된 방향으로 설정된 픽셀 수만큼 이동시키는 기능을 제공합니다. 이 함수는 유효한 마스크를 가진 다른 인스턴스와 충돌할 때까지 이동을 계속합니다. maxdist
인수로 -1 또는 0을 사용할 수 있으며, 기본값은 1000픽셀입니다. 즉, GameMaker는 인스턴스를 최대 1000픽셀까지 계속 이동시킵니다.
문법
move_contact_all(dir, maxdist);
인수 설명
인수 이름 | 타입 | 설명 |
---|---|---|
dir | 정수 | 이동할 방향을 지정합니다. |
maxdist | 정수 | 객체가 이동할 수 있는 최대 거리입니다. (-1 또는 0은 기본값 1000픽셀) |
반환값
이 함수는 반환값이 없습니다.
예제
if (!place_meeting(x, y + 1, all)) {
move_contact_all(270, -1);
}
위의 코드는 인스턴스 아래에 충돌이 있는지 확인하고, 충돌이 없으면 인스턴스를 아래로 이동시킵니다. 충돌이 발생하거나 1000픽셀을 초과할 때까지 이동합니다.
활용 예제
- 플랫폼 게임에서의 사용
gml if (!place_meeting(x, y + 1, solid)) { move_contact_all(270, -1); }
- 적 캐릭터의 이동
gml if (!place_meeting(x + 1, y, all)) { move_contact_all(0, -1); }
- 주인공이 장애물에 부딪히지 않도록 하기
gml if (!place_meeting(x, y - 1, all)) { move_contact_all(90, -1); }
- 상자 이동
gml if (keyboard_check(vk_right)) { move_contact_all(0, 10); }
- 자동으로 장애물 피하기
gml if (place_meeting(x, y + 1, solid)) { move_contact_all(270, -1); }
이와 같이 move_contact_all
함수는 다양한 게임 상황에서 유용하게 활용될 수 있습니다.