mp_linear_path_object 함수 설명
mp_linear_path_object
함수는 현재 인스턴스 위치에서 지정된 "xgoal" 및 "ygoal" 값으로 정의된 지점까지의 직선 경로를 계산합니다. 이 함수는 mp_linear_step()
함수와 동일한 단계 크기를 사용합니다. 지정된 경로는 이미 존재해야 하며, 새로운 경로로 덮어쓰게 됩니다. 함수는 전체 경로가 발견되었는지(true) 또는 발견되지 않았는지(false)를 반환합니다. 전체 경로가 발견되려면 지정된 객체나 인스턴스와의 충돌이 없어야 하며, false가 반환되면 경로는 생성되지만 경로가 차단된 위치까지만 실행됩니다.
주의: 이 함수는 인스턴스를 이동시키지 않습니다. 경로만 설정하며, 이동을 위해서는 thePath
함수를 사용해야 합니다.
문법
mp_linear_path_object(path, xgoal, ygoal, stepsize, obj);
매개변수 설명
매개변수 | 유형 | 설명 |
---|---|---|
path | Path Asset | 사용할 경로 |
xgoal | Real | 목표 x 위치 |
ygoal | Real | 목표 y 위치 |
stepsize | Real | 인스턴스가 한 단계에서 이동하는 픽셀 속도 |
obj | Object Asset 또는 Object Instance | 경로를 차단할 객체. 객체 인덱스, 인스턴스 ID 또는 특별 키워드 all 이 될 수 있음 |
반환 값
- Boolean: 경로가 완전히 발견되면 true, 그렇지 않으면 false 반환
예제 코드
if (mp_linear_path_object(path, mouse_x, mouse_y, 4, obj_Wall)) {
path_start(path, 4, 0, 0);
}
위의 코드는 "obj_Wall"과의 충돌을 확인하여 코드가 실행되는 객체와 마우스의 x/y 위치 사이의 경로를 검사합니다. 충돌이 없고 전체 경로가 생성되면, 생성된 경로를 따라 객체를 시작합니다.
활용 예제
- 적의 경로 설정: 적이 플레이어를 추적하도록 경로를 설정할 수 있습니다.
gml if (mp_linear_path_object(enemyPath, player.x, player.y, 5, obj_Wall)) { path_start(enemyPath, 5, 0, 0); }
- NPC의 이동 경로: NPC가 특정 지점으로 이동하도록 경로를 설정합니다.
gml if (mp_linear_path_object(npcPath, target.x, target.y, 3, obj_Obstacle)) { path_start(npcPath, 3, 0, 0); }
- 프로젝트iles의 경로 설정: 발사체가 목표를 향해 직선으로 이동하도록 경로를 설정합니다.
gml if (mp_linear_path_object(projectilePath, target.x, target.y, 6, obj_Barrier)) { path_start(projectilePath, 6, 0, 0); }
- 자동차의 경로 설정: 자동차가 도로를 따라 이동하도록 경로를 설정합니다.
gml if (mp_linear_path_object(carPath, destination.x, destination.y, 4, obj_TrafficLight)) { path_start(carPath, 4, 0, 0); }
- 게임 캐릭터의 경로 설정: 게임 캐릭터가 특정 목표로 이동하도록 경로를 설정합니다.
gml if (mp_linear_path_object(characterPath, goal.x, goal.y, 5, obj_Wall)) { path_start(characterPath, 5, 0, 0); }