move_towards_point 함수 설명
move_towards_point
함수는 코드가 실행되는 인스턴스가 설정된 지점으로 설정된 속도로 이동하도록 지시하는 함수입니다. 이 함수는 인스턴스가 목표 지점에 도달했을 때의 행동을 정의하지 않기 때문에, 인스턴스는 스스로 멈추지 않습니다. 예를 들어, 인스턴스가 3픽셀 앞으로 이동한 후 목표 위치를 2픽셀 초과하여 지나치고, 다시 3픽셀 뒤로 이동하여 목표 지점을 1픽셀 초과하는 식으로 "진동"할 수 있습니다. 이러한 현상을 피하는 방법 중 하나는 distance_to_point()
함수를 사용하여 인스턴스가 지정된 위치에서 얼마나 떨어져 있는지를 확인한 후 이동하는 것입니다.
참고: 이 함수는 인스턴스의 속도를 설정하므로, 이 코드를 중지하더라도 인스턴스는 이전 방향으로 계속 이동합니다. 따라서 인스턴스를 멈추고 싶다면 speed
를 0으로 설정해야 합니다.
문법
move_towards_point(x, y, sp);
인수 설명
인수 | 유형 | 설명 |
---|---|---|
x | Real | 이동할 지점의 x 좌표 |
y | Real | 이동할 지점의 y 좌표 |
sp | Real | 이동 속도 (픽셀 단위) |
반환값
N/A
활용 예제
아래 코드는 인스턴스가 변수 "target"에 저장된 인스턴스의 위치로 5픽셀의 속도로 이동하도록 합니다. 목표 위치에 도달하면 속도가 0으로 설정됩니다.
if (point_distance(x, y, target.x, target.y) > 5) {
move_towards_point(target.x, target.y, 5);
} else {
speed = 0;
}
추가 활용 예제
- 지속적인 이동: 인스턴스가 목표 지점에 도달할 때까지 계속 이동하도록 설정할 수 있습니다.
gml move_towards_point(target.x, target.y, 3);
- 목표 지점에 도달 시 행동 정의: 목표 지점에 도달했을 때 특정 행동을 수행하도록 설정할 수 있습니다.
gml if (point_distance(x, y, target.x, target.y) <= 5) { // 목표 지점에 도달했을 때의 행동 do_something(); }
- 지속적인 방향 변경: 목표 지점이 이동하는 경우, 인스턴스가 항상 목표 지점을 향하도록 설정할 수 있습니다.
gml move_towards_point(target.x, target.y, speed);
- 속도 조절: 목표 지점과의 거리에 따라 속도를 조절할 수 있습니다.
gml var distance = point_distance(x, y, target.x, target.y); var speed = clamp(distance / 10, 1, 5); // 거리 기반 속도 조절 move_towards_point(target.x, target.y, speed);
이러한 예제들은 move_towards_point
함수를 활용하여 다양한 방식으로 인스턴스를 제어하는 방법을 보여줍니다.