mp_grid_create 함수 설명 및 활용 예제
함수 설명
mp_grid_create
함수는 모션 계획 기능을 위한 mp_grid를 생성합니다. 이 함수는 다른 MP 그리드 함수 호출에서 사용할 수 있도록 인덱스를 반환합니다.
- x, y 좌표: 그리드의 왼쪽 상단 모서리 위치를 나타냅니다.
- hcells, vcells: 그리드 내에서 생성할 수평 및 수직 셀의 수를 나타냅니다.
- cell width, cell height: 셀의 크기를 픽셀 단위로 나타냅니다.
여러 개의 그리드 구조를 동시에 생성하고 유지할 수 있지만, 각 그리드는 메모리를 필요로 하며, 셀의 수가 많을수록 더 많은 메모리를 요구합니다. 또한, MP 함수는 프로세서에 부담을 줄 수 있으므로, 자주 호출하거나 셀 해상도가 높을수록 성능 저하가 발생할 가능성이 높습니다.
문법
mp_grid_create(left, top, hcells, vcells, cellwidth, cellheight);
매개변수 설명
매개변수 | 타입 | 설명 |
---|---|---|
left | Real | 방에서 mp_grid의 시작 x 좌표 |
top | Real | 방에서 mp_grid의 시작 y 좌표 |
hcells | Real | mp_grid가 포함할 수평 셀의 수 |
vcells | Real | mp_grid가 포함할 수직 셀의 수 |
cellwidth | Real | mp_grid의 각 셀의 너비 (픽셀 단위) |
cellheight | Real | mp_grid의 각 셀의 높이 (픽셀 단위) |
반환값
- MP Grid ID
예제 코드
global.grid = mp_grid_create(0, 0, room_width / 32, room_height / 32, 32, 32);
위 코드는 전역 변수 "grid"를 생성한 후, mp_grid를 생성하고 그 인덱스(id)를 해당 변수에 할당하여 이후의 모든 mp_grid 함수 호출에 사용할 수 있도록 합니다. 이 그리드는 방을 덮으며, 셀 해상도는 32x32 픽셀입니다. 예를 들어, 방의 크기가 640x480인 경우, 그리드는 300개의 셀을 포함하게 됩니다: 20개의 수평 셀(640 / 32)과 15개의 수직 셀(480 / 32)을 곱하면 300개의 셀이 생성됩니다.
활용 예제
- 다양한 그리드 생성: 여러 개의 그리드를 생성하여 서로 다른 목적에 맞게 사용할 수 있습니다.
gml grid1 = mp_grid_create(0, 0, 20, 15, 32, 32); grid2 = mp_grid_create(100, 100, 10, 10, 64, 64);
- 그리드 크기 조정: 방의 크기에 따라 그리드의 셀 수를 동적으로 조정할 수 있습니다.
gml grid = mp_grid_create(0, 0, room_width / 16, room_height / 16, 16, 16);
- 그리드 사용 예: 생성한 그리드를 사용하여 경로 탐색 알고리즘을 구현할 수 있습니다.
gml mp_grid_add_cell(grid, x, y); var path = mp_grid_path(grid, start_x, start_y, end_x, end_y);
- 그리드 삭제: 더 이상 필요하지 않은 그리드를 삭제할 수 있습니다.
gml mp_grid_destroy(grid);
이와 같이 mp_grid_create
함수를 활용하여 다양한 그리드 구조를 생성하고, 이를 통해 모션 계획 및 경로 탐색을 효율적으로 수행할 수 있습니다.