mp_potential_step_object 함수 설명
mp_potential_step_object
함수는 인스턴스가 특정 위치(xgoal/ygoal)로 이동하면서 장애물을 피하도록 도와주는 기능을 제공합니다. 이 함수는 지정된 "obj" 인수로 정의된 객체 인스턴스와 충돌할 경우, 이동 방향을 변경하여 해당 인스턴스를 피하고 주위를 돌아가도록 시도합니다. 이 방법이 항상 성공하는 것은 아니지만, 대부분의 간단한 경우에는 목표를 향해 효과적으로 이동할 수 있습니다. 함수는 목표에 도달했는지를 나타내는 불리언 값을 반환합니다.
문법
mp_potential_step_object(xgoal, ygoal, stepsize, obj)
인수 설명
인수 | 유형 | 설명 |
---|---|---|
xgoal | Real | 목표 x 위치 |
ygoal | Real | 목표 y 위치 |
stepsize | Real | 인스턴스가 한 단계에서 이동하는 속도 (픽셀 단위) |
obj | Object Asset | 인스턴스가 이동할 때 경로를 차단할 객체. 객체 인덱스, 인스턴스 ID 또는 특별 키워드 all 이 될 수 있음 |
반환값
- Boolean: 목표에 도달했는지 여부
활용 예제
예제 1: 적 피하기
if (instance_exists(obj_Enemy)) {
var inst;
inst = instance_nearest(x, y, obj_Enemy);
mp_potential_step_object(inst.x, inst.y, 5, obj_Wall);
}
위 코드는 현재 방에 "obj_Enemy" 인스턴스가 있는지 확인합니다. 만약 있다면, 가장 가까운 적 인스턴스를 찾아 그 ID를 변수에 저장합니다. 이 변수는 mp_potential_step_object
함수에 사용되어 인스턴스가 "obj_Wall" 인스턴스를 피하면서 적의 x/y 위치로 5픽셀의 속도로 이동하도록 합니다.
예제 2: 장애물 회피
mp_potential_step_object(100, 200, 4, obj_Obstacle);
이 코드는 인스턴스가 (100, 200) 위치로 4픽셀의 속도로 이동하면서 "obj_Obstacle"을 피하도록 합니다.
예제 3: 목표 위치로 이동
if (mp_potential_step_object(target_x, target_y, 3, obj_Block)) {
// 목표에 도달했을 때의 행동
}
이 코드는 인스턴스가 목표 위치로 3픽셀의 속도로 이동하며 "obj_Block"을 피하고, 목표에 도달했을 경우 특정 행동을 수행합니다.