move_outside_all 함수 설명
move_outside_all
함수는 인스턴스가 충돌을 피하기 위해 어떤 방향으로든, 그리고 매 스텝마다 원하는 픽셀 수만큼 이동하도록 지시할 수 있는 기능입니다. 기본적으로 최대 거리(maxdist) 값으로 -1 또는 0을 사용하면 1000픽셀로 설정됩니다. 즉, GameMaker는 인스턴스를 충돌이 해제될 때까지 계속해서 1000픽셀 위로 이동시킵니다.
문법
move_outside_all(dir, maxdist);
인수 설명
인수 | 타입 | 설명 |
---|---|---|
dir | 정수 | 이동할 방향을 지정합니다. |
maxdist | 정수 | 객체가 이동할 수 있는 최대 거리입니다. (-1 또는 0은 기본값 1000픽셀) |
반환값
이 함수는 반환값이 없습니다.
예제
if (place_meeting(x, y, all)) {
move_outside_all(90, 1);
}
위 코드는 인스턴스가 다른 인스턴스와 충돌할 때마다 매 스텝마다 1픽셀 위로 이동하게 합니다.
활용 예제
- 충돌 감지 후 이동
충돌이 발생했을 때, 인스턴스를 오른쪽으로 이동시키는 예제입니다.gml if (place_meeting(x, y, all)) { move_outside_all(0, 5); }
- 충돌 해제 후 멈춤
충돌이 해제되면 이동을 멈추는 예제입니다.gml if (!place_meeting(x, y, all)) { // 이동 멈춤 } else { move_outside_all(270, 10); }
- 다양한 방향으로 이동
충돌 시 다양한 방향으로 이동하는 예제입니다.gml if (place_meeting(x, y, all)) { var direction = random(360); // 랜덤 방향 move_outside_all(direction, 10); }
- 최대 거리 조정
최대 거리 값을 조정하여 더 멀리 이동하는 예제입니다.gml if (place_meeting(x, y, all)) { move_outside_all(90, 100); }
- 충돌 시 애니메이션 재생
충돌 시 애니메이션을 재생하고 이동하는 예제입니다.gml if (place_meeting(x, y, all)) { sprite_index = spr_collision; // 충돌 애니메이션 move_outside_all(180, 5); }