mp_grid_path 함수 설명
이 문서에서는 mp_grid_path
함수에 대해 설명합니다. 이 함수는 미리 정의된 mp_grid
를 사용하여 시작 지점에서 종료 지점까지 장애물을 피하면서 경로를 생성합니다.
함수 개요
- 시작 지점:
xstart
,ystart
인수로 지정합니다. - 종료 지점:
xgoal
,ygoal
인수로 지정합니다. - 대각선 이동 허용:
allowdiag
인수에true
를 지정하면 대각선 이동이 허용됩니다.
함수는 경로를 성공적으로 찾으면 true
를 반환하고, 실패하면 false
를 반환합니다. 또한 선택한 경로를 설정합니다.
사용 예시
아래 이미지는 장애물("pipe" 객체)이 추가된 그리드에서 경로가 어떻게 생성되는지를 보여줍니다. 두 개의 경로가 생성되었으며, 하나는 대각선 이동이 허용된 경로(녹색)이고, 다른 하나는 수평/수직 이동만 허용된 경로(빨간색)입니다.
인수 | 타입 | 설명 |
---|---|---|
id | MP Grid ID | 사용할 mp_grid의 인덱스 |
path | Path Asset | 함수에서 사용할 경로 |
xstart | Real | 새 경로의 시작 x 좌표 |
ystart | Real | 새 경로의 시작 y 좌표 |
xgoal | Real | 새 경로의 종료 x 좌표 |
ygoal | Real | 새 경로의 종료 y 좌표 |
allowdiag | Boolean | 대각선 이동 허용 여부 |
코드 예제
아래는 mp_grid_path
함수를 사용하는 코드 예제입니다.
global.grid = mp_grid_create(0, 0, room_width div 32, room_height div 32, 32, 32);
mp_grid_add_instances(global.grid, obj_wall, false);
with (obj_Enemy) {
path = path_add();
if (mp_grid_path(global.grid, path, x, y, obj_Player.x, obj_Player.y, 1)) {
path_start(path, 0, 3, 0);
}
}
위 코드는 다음과 같은 과정을 수행합니다:
global.grid
라는 전역 변수를 생성하고,mp_grid
를 생성하여 그 인덱스를 변수에 할당합니다.obj_Wall
의 모든 인스턴스를 그리드에 추가합니다.obj_Enemy
의 모든 인스턴스가 경로를 생성하고,mp_grid_path
를 사용하여 자신의 위치에서obj_Player
의 위치까지의 경로를 계산합니다.- 경로가 존재하면 객체가 경로를 따라 이동하기 시작합니다.
활용 예제
- 적 AI 경로 찾기: 적이 플레이어를 추적할 때 장애물을 피하면서 경로를 찾는 데 사용할 수 있습니다.
if (mp_grid_path(global.grid, path, x, y, player.x, player.y, 1)) {
path_start(path, 0, 3, 0);
}
- NPC 이동 경로 설정: NPC가 특정 지점으로 이동할 때 장애물을 피하는 경로를 설정할 수 있습니다.
if (mp_grid_path(global.grid, path, npc.x, npc.y, target.x, target.y, 0)) {
path_start(path, 0, 2, 0);
}
- 게임 레벨 디자인: 레벨 디자인 시 장애물 배치에 따라 경로를 동적으로 생성하여 플레이어의 이동 경로를 조정할 수 있습니다.
mp_grid_add_instances(global.grid, obj_obstacle, false);
이와 같은 다양한 활용을 통해 mp_grid_path
함수를 효과적으로 사용할 수 있습니다.