amplitude.init("2e2e5a386856efdf3237cf254a9d14d9"

[개념 콕] 유니티 네비게이션 시스템

내일배움캠프 수료생이 개발에 꼭 필요한 핵심 개념만 콕 집어 드립니다.
Jun 05, 2024
[개념 콕] 유니티 네비게이션 시스템
✍🏼
유니티(Unity) 입문자 여러분, 정보가 너무 많고 배워야 할 것도 산더미라 어디서부터 시작해야 할지 막막하신가요? 내일배움캠프 수료생들이 4개월 동안 배운 엄선된 게임 개발 핵심 개념을 직접 정리해서 알려 드립니다. 공부하다 막히거나 헷갈리는 개념이 있다면 개념 콕으로 정리해보세요.
 

유니티 내비게이션 시스템(Unity Navigation System)

유니티 내비게이션 시스템(Unity Navigation System)은 게임 내 오브젝트들이 효율적으로 경로를 찾고 이동할 수 있도록 돕는 기능입니다. 대부분의 게임은 캐릭터가 이동할 수 있는 부분과 이동할 수 없는 벽이나 장애물 등으로 이루어져 있습니다. 내비게이션 시스템 없이 캐릭터를 이동시키면, 벽이나 장애물을 만났을 때 이동하지 못하거나 예상치 못한 버그가 발생할 수 있습니다. 이러한 문제를 해결하기 위해 경로 찾기를 도와주는 내비게이션 시스템이 사용됩니다. 3D 프로젝트에서는 Mesh Navigation을 사용하여 쉽게 구현할 수 있지만, 2D 프로젝트에서는 기본적으로 이러한 기능을 제공하지 않습니다. 따라서 2D에서는 Astar(A*) 같은 길찾기 알고리즘을 직접 구현하거나, 2D NavMesh 시스템을 외부에서 가져와 사용할 수 있습니다.
 

2D에서 길찾기

유니티에서는 3D 환경과 달리 2D에서 기본적으로 NavMesh와 같은 내비게이션 기능을 제공하지 않습니다. 따라서 적합한 2D 길찾기 알고리즘과 도구를 사용해야 합니다. 대표적인 방법으로는 A* 알고리즘을 직접 구현하는 것입니다. A* 알고리즘은 2D 그리드 기반 길찾기에 매우 효과적이며 다양한 2D 게임에서 활용됩니다. 이 알고리즘은 다익스트라 알고리즘을 확장한 경로 탐색 알고리즘으로, 그리드로 구성된 월드의 모든 지점을 노드로 하는 그래프를 구성한 뒤, 출발점에서 도착점까지의 최단 거리를 효율적으로 찾아냅니다. 또는 유니티 사용자들이 만든 2D NavMesh와 같은 플러그인을 가져와 사용하면, 알고리즘을 직접 구현하지 않고도 쉽게 길찾기 기능을 구현할 수 있습니다.
 

3D에서 길찾기

3D 환경에서는 유니티에서 제공하는 내비게이션 시스템을 활용하여 게임 오브젝트가 효율적으로 경로를 탐색하고 이동할 수 있습니다. 이 시스템의 핵심 구성 요소로는 NavMesh(Navigation Mesh), NavMesh Agent, NavMesh Obstacle 등이 있습니다.
 
  • Mesh
Mesh는 그물망이라는 뜻을 가지고 있으며, 메시라고 합니다. 컴퓨터 그래픽에서 3D 오브젝트를 표현하기 위해서 Mesh 구조를 활용합니다. 점이 모여 선이 되고, 선이 모여 면이 되고, 면이 모여 도형이 되는 것을 생각하면 쉽습니다. 오브젝트를 표현하기 위해 필요한 정점(Vertex)들이 있고, 두 정점을 연결한 선(Edge)들이 있습니다. 유니티에서는 기본적으로 3개의 정점으로 이루어진 삼각형을 단위로 사용하며, 이러한 삼각형들이 여러 개 모여 Mesh를 이룹니다.
  • NavMesh
NavMesh는 월드에서 오브젝트가 이동할 수 있는 영역을 정의하는 데이터 구조입니다. 게임의 지형을 분석하여 이동 가능한 영역과 불가능한 영역을 구분하고, 이를 바탕으로 이동 경로를 계산합니다. NavMesh를 생성하면 유니티는 자동으로 지형과 오브젝트를 분석하여 이동 가능한 평면을 Mesh 형태로 생성합니다.
  • NavMesh Agent
NavMesh Agent는 이동할 캐릭터에게 부착되어 경로 탐색과 이동을 담당하는 컴포넌트입니다. 에이전트는 NavMesh를 따라 이동하며, 장애물을 피하고 목표 지점에 도달하는 경로를 계산합니다. 에이전트는 NavMesh를 기반으로 목표 지점까지의 최단 경로를 계산하고, 이를 따라 이동하며, 중간에 장애물이 있으면 경로를 다시 계산하여 목표 지점에 도달할 때까지 이 과정을 반복합니다.
  • NavMesh Obstacle
NavMesh Obstacle은 장애물을 정의하는 컴포넌트입니다. 이동 중인 오브젝트가 이 장애물을 피할 수 있도록 경로를 재계산합니다. 장애물로 사용할 게임 오브젝트에 이 컴포넌트를 추가하고 속성을 설정하여 장애물을 정의할 수 있습니다.
 
 

내일배움캠프는 개발에 필요한 핵심만 배웁니다

지금까지 꼭 필요한 유니티 지식에 대해 알아보았습니다. 내일배움캠프에서는 전문가들이 선별한 핵심 게임 개발 지식으로 개발 공부도, 취업도 보다 효율적으로 할 수 있는데요. 국내 유수의 IT기업 출신 튜터님들과 실습 위주의 독보적인 커리큘럼으로 개발자 취업을 체계적으로 준비해보세요. 내일배움캠프 4개월, 여러분 인생의 가장 큰 터닝 포인트입니다.
 
 
 
CREDIT
글 | 김세진 내일배움캠프 수료생 편집 | 정효재 팀스파르타 에디터
 
 

취업 준비, 어디서부터 시작해야 할지 모르겠다면?

 
🧐비전공자인데 IT 업계 취업할 수 있을까?
😟프로젝트 경험이 부족한데, 어떻게 준비해야 할까?
🥺IT 기업으로 이직하고 싶은데 뭐부터 시작해야 할까?
 
이런 고민을 하고 있다면, 내일배움캠프의 IT 취업 컨설팅을 받아보세요.
취업 코칭 전문가들이 여러분의 고민을 해결해 드립니다.
 
다음 링크에 이메일을 입력하시면 메일로 1:1 커리어 상담권과 취준 자료집을 보내드릴게요.
 
Share article
Subscribe to our newsletter
RSSPowered by inblog