move_outside_solid 함수 설명
move_outside_solid
함수는 충돌이 발생한 인스턴스가 "solid"로 표시된 경우, 해당 인스턴스가 충돌을 피하기 위해 지정된 방향으로 이동하도록 합니다. 이 함수는 매 스텝마다 지정된 픽셀 수만큼 이동할 수 있으며, 최대 이동 거리는 기본값으로 1000픽셀입니다.
문법
move_outside_solid(dir, maxdist);
매개변수 설명
매개변수 | 타입 | 설명 |
---|---|---|
dir | 방향 | 이동할 방향을 지정합니다. |
maxdist | 정수 | 객체가 이동할 수 있는 최대 거리입니다. (-1 또는 0은 기본값 1000픽셀) |
반환값
이 함수는 반환값이 없습니다.
사용 예제
다음 코드는 충돌 이벤트에서 사용되며, "other" 인스턴스가 "solid"로 표시되어 있는지 확인한 후, 해당 인스턴스를 충돌에서 벗어나게 이동시킵니다.
if (other.solid) {
var pdir;
pdir = point_direction(other.x, other.y, x, y);
move_outside_solid(pdir, -1);
}
활용 및 응용 예제
예제 1: 벽에 부딪혔을 때 이동
if (place_meeting(x, y, obj_wall) && !is_moving) {
move_outside_solid(point_direction(x, y, obj_wall.x, obj_wall.y), -1);
}
예제 2: 플레이어가 장애물에 부딪혔을 때
if (collision_rectangle(x, y, x + sprite_width, y + sprite_height, obj_obstacle, false, true)) {
move_outside_solid(point_direction(x, y, obj_obstacle.x, obj_obstacle.y), -1);
}
예제 3: 적이 벽에 부딪혔을 때
if (other.solid) {
var direction = point_direction(other.x, other.y, x, y);
move_outside_solid(direction, 0);
}
예제 4: 특정 방향으로만 이동
if (place_meeting(x, y, obj_solid)) {
move_outside_solid(90, 500); // 아래로 500픽셀 이동
}
이와 같은 방식으로 move_outside_solid
함수를 활용하여 다양한 충돌 처리 및 이동 로직을 구현할 수 있습니다.