본문 바로가기

pathfinding6

[게임메이커 강좌-기타][GMS2]그리드 기반의 길찾기-6 A Star 알고리즘 GAME MAKER 강좌 KAYAN ◈ 그리드 기반의 길찾기(Path finding) A Star 알고리즘 이번 강좌에서는 mp_grid 기능을 사용하지 않는 길찾기를 만들어 볼 겁니다. 강좌에서는 아래와 같은 방식으로 길찾기를 구성할 거에요. (▲ 길찾기) 이 방식은 오브젝트가 오브젝트의 중심부로부터 이동할 수 있는 지역을 모두 체크하여 우선 순위를 지정하고, 좌표를 저장해요. 이 우선 순위는 중심부와의 거리에 해당합니다. 예를 들어, 오브젝트 현재 위치는 우선 순위 1부터 시작하고, 1칸 다음은 2, 2칸은 3으로 매깁니다. (▲ 이동 가능 좌표의 우선순위) 그리고 이동 가능 지역의 좌표를 모두 저장했다면, 저장한 좌표들을 체크하여 이동할 목표 지점과 일치하는 좌표의 우선 순위를 시작으로 오브젝트 중.. 2023. 1. 29. (♡ )
[게임메이커 강좌-기타][GMS2]그리드 기반의 길찾기-5 이동 거리 제한 GAME MAKER 강좌 KAYAN ◈ 그리드 기반의 길찾기(Path finding) 이동 거리 제한 이번 강좌에서는 길찾기에서 이동 거리 제한하는 방법에 대해 알아봅시다. (▲ 이동 제한) 현 강좌는 [응용편1]강좌의 예제를 기반으로 합니다. [응용편1]의 플레이어 이동은 아래와 같습니다. //● obj_player - Step 이벤트 var mx,my; mx=(floor(mouse_x/global.grid)*global.grid)+floor(global.grid/2); my=(floor(mouse_y/global.grid)*global.grid)+floor(global.grid/2); var _break; _break=0; //---------- 이동 패스 구성 if move_on==0{ if pos.. 2023. 1. 18. (♡ )
[게임메이커 강좌-기타][GMS2]그리드 기반의 길찾기-4 응용편3 GAME MAKER 강좌 KAYAN ◈ 그리드 기반의 길찾기(Path finding) 응용편3 이번 강좌에서는 실시간으로 패스를 갱신하면서 이동하는 것을 구성해봅시다. 패스는 초기에 설정하고, 이동이 완료되거나 이동 위치를 변경하기 전까지는 유지되는 형태입니다. (▲ 패스 형태 유지) 이전 강좌에서는 이동하면서 패스를 갱신하는 방식이라 현재 위치에서 도착지점까지 경로가 약간 변경될 수 있었으나 이 방식은 패스를 처음 생성한대로 이동합니다. 먼저 룸 시작시 그리드와 패스를 만들어야 합니다. 그리드와 패스를 만들 오브젝트( obj_system )를 하나 추가하고 [Room Start 이벤트]를 추가합니다. //● obj_system - Room Start 이벤트 global.grid=32; global.mo.. 2023. 1. 13. (♡ )
[게임메이커 강좌-기타][GMS2]그리드 기반의 길찾기-3 응용편2 GAME MAKER 강좌 KAYAN ◈ 그리드 기반의 길찾기(Path finding) 응용편2 이번 강좌에서는 실시간으로 패스를 현재 위치에서 갱신하면서 이동하는 것을 구성해봅시다. (▲ 패스를 현재 위치에서 갱신) 이 방식은 패스를 오브젝트에서 단일 방식으로 공유하여 사용하지만, 패스를 실시간으로 갱신하는 유동적인 패스를 구성하기 때문에 패스를 사용하는 오브젝트를 여러 개를 동시에 이동시킬 수 있습니다. 먼저 룸 시작시 그리드와 패스를 만들어야 합니다. 그리드와 패스를 만들 오브젝트( obj_system )를 하나 추가하고 [Room Start 이벤트]를 추가합니다. //● obj_system - Room Start 이벤트 global.grid=32; global.move_grid=mp_grid_cre.. 2023. 1. 12. (♡ )
[게임메이커 강좌-기타][GMS2]그리드 기반의 길찾기-2 응용편1 GAME MAKER 강좌 KAYAN ◈ 그리드 기반의 길찾기(Path finding) 응용편1 이번 강좌에서는 길찾기를 직접 구성해봅시다. 강좌에서는 마우스를 클릭하면 그 위치로 플레이어가 이동하도록 만들 거에요. (▲ 마우스를 클릭하면 이동) 먼저 룸 시작시 그리드와 패스를 만들어야 합니다. 그리드와 패스를 만들 오브젝트( obj_system )를 하나 추가하고 [Room Start 이벤트]를 추가합니다. //● obj_system - Room Start 이벤트 global.grid=32; global.move_grid=mp_grid_create(0,0,ceil(room_width/global.grid),ceil(room_height/global.grid),global.grid,global.grid);.. 2023. 1. 11. (♡ )