mp_linear_step 함수 설명
mp_linear_step
함수는 인스턴스가 특정 지점으로 "이동"하도록 지시하는 기능을 제공합니다. 이때 목표 지점은 xgoal
과 ygoal
값으로 지정됩니다. 이동하는 크기(즉, 인스턴스가 매 스텝마다 이동해야 하는 픽셀 수)는 stepsize
로 나타내며, 인스턴스가 이미 목표 위치에 도달한 경우에는 더 이상 이동하지 않습니다. 이는 move_towards_point()
와 같은 다른 간단한 함수와는 다릅니다.
stepsize
는 인스턴스가 매 스텝마다 충돌을 확인할 거리이기도 하며, 인스턴스가 모든 객체와 충돌을 확인할지(checkall
이 true) 아니면 단지 고체 객체와만 충돌을 확인할지를 선택할 수 있습니다. 이 함수는 목표 위치에 도달했는지(true) 또는 실패했는지(false)를 반환합니다.
문법
mp_linear_step(xgoal, ygoal, stepsize, checkall);
매개변수 설명
매개변수 | 타입 | 설명 |
---|---|---|
xgoal | 숫자 | 목표 x 위치 |
ygoal | 숫자 | 목표 y 위치 |
stepsize | 숫자 | 인스턴스가 매 스텝마다 이동하는 속도(픽셀) |
checkall | 불리언 | 모든 인스턴스를 확인할지(true) 또는 고체 인스턴스만 확인할지(false) |
반환값
- 목표 위치에 도달하면 true, 실패하면 false를 반환합니다.
활용 예제
예제 1: 마우스를 향해 이동하기
if (mp_linear_step(mouse_x, mouse_y, 5, 0)) {
instance_create_layer(x, y, "Effects", obj_Explosion);
instance_destroy();
}
위 코드는 객체가 마우스를 향해 초당 5픽셀의 속도로 이동합니다. 마우스 위치에 도달하면 "obj_Explosion" 객체를 생성하고 자신을 파괴합니다.
예제 2: 적을 향해 이동하기
if (mp_linear_step(enemy.x, enemy.y, 3, 1)) {
// 적에게 도달했을 때의 행동
}
이 코드는 인스턴스가 적의 위치로 초당 3픽셀의 속도로 이동합니다. 적에게 도달하면 추가 행동을 수행할 수 있습니다.
예제 3: 장애물 회피
if (!mp_linear_step(target.x, target.y, 4, 0)) {
// 장애물에 부딪혔을 때의 행동
}
이 코드는 목표 위치로 초당 4픽셀의 속도로 이동하려고 시도합니다. 만약 장애물에 부딪히면 다른 행동을 수행할 수 있습니다.
예제 4: 플레이어를 추적하기
if (mp_linear_step(player.x, player.y, 2, 1)) {
// 플레이어에게 도달했을 때의 행동
}
이 코드는 인스턴스가 플레이어를 향해 초당 2픽셀의 속도로 이동합니다. 플레이어에게 도달하면 특정 행동을 수행할 수 있습니다.