The trick to tile-based 2D navigation in Godot!
- Godot의 A* Grid 2D는 2D 그리드 기반 이동 및 장애물 회피 시스템 구현에 필수적입니다. 🗺️
- 타일맵의 타일셋 리소스에 'obstacle'과 같은 사용자 정의 불리언 데이터 필드를 추가하여 장애물을 정의할 수 있습니다. 🧱
- A* Grid 2D는
region_size와 cell_size를 설정하고 update()를 호출하는 것만으로 쉽게 초기화할 수 있어 A* 2D/3D보다 간편합니다. ✨
- 타일맵의 사용자 정의 데이터 필드를 기반으로 A* Grid 2D의 해당 지점을
set_point_solid(true)로 설정하여 장애물을 표시합니다. 🚫
_draw() 메서드를 활용하여 A* Grid 2D의 워커블/논워커블 셀을 시각화하는 디버그 히트맵을 구현할 수 있습니다 (예: 빨간색은 장애물, 녹색은 이동 가능). 🎨
- 완전히 막는 대신
set_point_weight()를 사용하여 특정 셀의 이동 비용을 조절하여 알고리즘이 해당 경로를 선호하거나 피하도록 유도할 수 있습니다. ⚖️
- 플레이어 노드에서
AStarGrid2D.get_point_path() 메서드를 사용하여 현재 위치에서 마우스 오버된 타겟 셀까지 최적화된 경로를 계산합니다. 🚶
diagonal_mode 속성을 DIAGONAL_MODE_NEVER로 설정하여 대각선 이동을 비활성화하고, default_compute_heuristic을 HEURISTIC_MANHATTAN으로 설정하여 직각 이동에 최적화할 수 있습니다. 📐
- 계산된 경로(
move_points)를 따라 플레이어를 실제로 이동시키기 위해 _physics_process 훅에서 각 중간 지점으로 이동하는 로직을 구현합니다. 🚀
데브허브 | DEVHUB | The trick to tile-based 2D navigation in Godot!