mp_potential_path 함수 설명 및 활용 예제
함수 설명
mp_potential_path
함수는 현재 위치와 방향에서 목표 위치(xgoal
, ygoal
)까지의 경로를 계산합니다. 이 함수는 지정된 단계 크기를 사용하여 모든 인스턴스 또는 고체로 표시된 인스턴스와의 충돌을 피하려고 합니다. 이 함수는 mp_potential_step()
와 유사하게 잠재적 필드 단계를 사용하여 경로를 계산합니다. 경로는 이미 존재해야 하며, 새로운 경로로 덮어씌워집니다. 함수는 경로를 찾았는지 여부를 반환합니다 (true 또는 false).
무한 루프를 방지하기 위해 1보다 큰 인자를 제공해야 합니다. 함수는 시작점과 목표점 사이의 거리의 factor
배보다 짧은 경로를 찾지 못하면 실패로 보고합니다. 일반적으로 4의 인자가 충분하지만 긴 우회를 예상하는 경우 더 길게 설정할 수 있습니다. 실패할 경우 목표 방향으로 대략적인 경로가 생성되지만 목표에 도달하지는 않습니다.
주의: 이 함수는 인스턴스를 이동시키지 않습니다. 경로만 설정하며, 이동을 위해서는 Path
관련 함수를 사용해야 합니다.
함수 문법
mp_potential_path(path, xgoal, ygoal, stepsize, factor, checkall)
인자 설명
인자 | 타입 | 설명 |
---|---|---|
path | Path Asset | 함수에서 사용할 경로 |
xgoal | Real | 목표 x 위치 |
ygoal | Real | 목표 y 위치 |
stepsize | Real | 인스턴스가 한 단계에서 이동하는 픽셀 수 |
factor | Real | 무한 루프를 방지하기 위해 사용되는 숫자 (1보다 커야 함) |
checkall | Boolean | 모든 인스턴스를 검사할지 (true) 또는 고체 인스턴스만 검사할지 (false) |
반환 값
- Boolean: 경로를 찾았는지 여부 (true 또는 false)
활용 예제
예제 1: 기본 경로 생성
path = path_add();
mp_potential_path(path, obj_Player.x, obj_Player.y, 3, 4, 0);
path_start(path, 3, 0, 0);
위 코드는 새로운 경로 자원을 생성하고 그 인덱스를 변수 "path"에 저장합니다. 그런 다음 mp_potential_path
를 사용하여 이 코드가 있는 객체와 "obj_Player" 객체 간의 경로를 생성합니다. 모든 인스턴스와의 충돌을 검사한 후, 경로를 따라 객체를 시작합니다.
예제 2: 고체 인스턴스만 검사
path = path_add();
mp_potential_path(path, target.x, target.y, 5, 2, false);
path_start(path, 5, 0, 0);
이 코드는 목표 위치로 가는 경로를 생성하되, 고체 인스턴스만 검사합니다. 단계 크기는 5로 설정되어 있습니다.
예제 3: 긴 우회 경로 설정
path = path_add();
mp_potential_path(path, destination.x, destination.y, 2, 10, true);
path_start(path, 2, 0, 0);
여기서는 긴 우회를 예상하여 factor
를 10으로 설정했습니다. 모든 인스턴스를 검사하여 경로를 생성합니다.
예제 4: 실패한 경로 생성
path = path_add();
mp_potential_path(path, unreachable.x, unreachable.y, 1, 3, true);
path_start(path, 1, 0, 0);
이 코드는 도달할 수 없는 목표 위치로 경로를 생성하려고 시도합니다. 경로를 찾지 못할 경우에도 대략적인 방향으로 경로가 생성됩니다.