상세 컨텐츠

본문 제목

[유니티 소소모임] 3주차. 유니티 에디터 배우기 2 (Editor: 니나노)

24-25/Untiy

by 롱롱😋 2024. 11. 8. 10:05

본문

728x90

◇ Navigation Mesh

AI 캐릭터가 이동할 수 있는 경로를 지정하기 위해서 경로를 탐색하는 시스템이다.

AI 캐릭터가 여러가지 장애물 등의 요소를 피하면서 목표 지점으로 이동하도록 할 때 이용된다.

위와 같이 이런 필드 맵이 주어졌을 때, 여러가지 요소들을 고려하여 이동 경로를 지정한다.

 

0. Navigation 설정하기

유니티의 업데이트로 인해 기존 window 탭에 있던 것이 사라졌다.

유니티 window > asset store 에서 설치 후 import 해서 사용 가능하다.

 

1. Navigation View

NavMesh를 따라 경로를 이동하는 AI 캐릭터를 제어하는데 사용하는 컴포넌트이다.

 

▷ Agent (navMeshComponent)

name: agent type에 보여지는 이름
radius: 에이전트의 반지름
height: 에이전트의 높이
step height: 올라갈 수 있는 계단의 높이 (계단 사이의 단차)
Max slope: 올라갈 수 있는 경사 각도

▷ Areas

Navigation Mesh에서 특정 구역을 정의하여 각 구역의 이동 가능 여부와 우선 순위를 설정할 수 있도록 하는 기능이다.

name: 구역의 이름 (기본적으로 walkable, not walkable, jump가 제공된다.)
cost: 각 영역에 비용을 설정하여 경로 계산에 사용

▷ Bake

씬에서 AI 캐릭터가 이동할 수 있는 경로를 계산해주는 작업이다. Agent는 Bake된 NavMesh 위에서 이동할 경로를 찾고 탐색한다. Bake 과정으로 씬에서 지형과 장애물을 분석하고 이동 가능한 구역을 지정해 둔다.

agent radius: 에이전트가 지나갈 수 있는 반지름
agent height: 에이전트가 지나갈 수 있는 높이
max slope: 에이전트가 올라갈 수 있는 경사 각도
step height: 에이전트가 오르내릴 수 있는 계단의 높이
+ Drop height: 이동할 수 있는 절벽 아래의 높이
+ Jump Distance: 뛰어서 넘을 수 있는 절벽 거리

▷ Object

AI 캐릭터가 Nav Mesh 위에서 이동할 수 있도록 설정된 객체를 의미한다.

navigation static: NavMesh를 만들 때 고정된 장애물로 간주할지 결정하는 옵션
navigation area: 구역의 유형을 정의하여 AI가 해당 구역을 이동할 때 비용을 결정하는데 사용하는 옵션

 

2. NavMeshAgent

AI 캐릭터가 nav Mesh 상에서 자동으로 경로를 탐색하고 이동하도록 돕는 컴포넌트이다.

navMesh가 이동할 수 있는 영역을 나타내고 AI 캐릭터는 이 정보를 기반으로 이동한다.

=> 여러가지 옵션을 통해서 agent의 이동을 조절할 수 있다.

 

3. OffMeshLink

NavMesh를 사용하는 AI 캐릭터가 끊긴 경로를 넘어서 이동할 수 있도록 연결하는 링크이다.

사다리 암벽과 같이 수직으로 되어 오르 내리는 경로, 절벽과 절벽 사이를 뛰어 넘어야 하는 경로 등 떨어져 있는 곳들을 이동할 수 있도록 해준다.

 

offMeshLink 설정하기 (자동)

1. Off Mesh Link를 설정할 오브젝트 선택

2. Object 탭에서 generate OffMeshLinks를 설정한다.

3. Bake 탭에서 낙하높이, 점프 거리를 설정한다.

=> 직접 오브젝트에 컴포넌트를 부여해서 설정해주어도 된다. (더 세세한 설정 가능)

 

4. navMeshObstackle

AI 캐릭터가 이동하는 NavMesh에 동적 장애물을 추가하는 컴포넌트이다.

해당 컴포넌트를 통해 움직이거나 회전하는 장애물을 만들어서 AI가 특정 구역을 피해가도록 설정할 수 있다.

 

 

◇ 3D Animation

1. Mecanim Animation System

Animator view - Animator Controller Asset - Animation Asset - Avatar Mask Asset - Animator

유니티에서 3D 캐릭터 애니메이션을 손쉽게 구현할 수 있게 해주는 애니메이션 시스템이다.

Mecanim을 통해 애니메이션 전환, 불랜딩 등의 다양한 기능을 수행할 수 있다.

(사진 첨부하기)

 

▷ Animator

게임 오브젝트 내의 애니메이션 재생 교체 등을 제어하는 역할을 수행한다.

Controller: 애니메이션 전환을 처리하는 노드 기반 시스템 상태 머신
Avatar: 외부 틀로 제작한 모델 파일을 유니티에서 사용할 수 있도록 연결

 

 Animator Contoller Asset  /  Animation State Machine

현재 animator 컴포넌트에서 재생 가능한 애니메이션들을 관리하는 상태 머신이다.

 

- 주황색: 게임 시작 시 가장 처음 실행되는 상태

- 화살표: 애니메이션 전환 제어 방향

 

 Parameters

애니메이션 간의 전환을 위해서 사용한다.

해당 animator controller에 귀속된 변수들이며, 이 변수를 조건으로 사용해 애니메이션 간 전환을 실행한다.

 

 Blend Tree

기존 여러 애니메이션을 자연스럽게 섞어서 새로운 애니메이션이 나타나도록 한다.

Animator에 여러 Layer를 두어 신체의 부위 별 각각 다른 애니메이션을 보여주기도 하고 같은 부위에서도 비율에 따라 다른 애니메이션을 보여주기도 한다.

즉, 상태 안에 있는 여러 애니메이션 클립을 부드럽게 연결하여 자연스러운 전환을 만들어주는 기능이다.

Animator - Layer
Avatar Mask

다음과 같이 Avatar Mask를 통해 애니메이션을 재생하고 싶은 부위를 결정할 수 있다.

 

▶ 1D Blend Tree

하나의 파라미터로 애니메이션을 블렌드

Ex) 대기 - 걷기 - 뛰기 가 순서로 진행되는 경우 -> 파라미터의 값을 0~1 사이로 사용하며, 이 안에서 3개의 애니메이션을 임계값에 따라 전환되도록 한다.

 

 2D Blend Tree

두개의 파라미터로 애니메이션을 블렌드

 

1) 2D Simple Directional

- 모두 다른 방향을 향할 때

- 전, 후, 좌, 우 와 같이 각 애니메이션이 주요 방향에 맞추어서 전환이 될 때 사용한다.

- 단순한 방향 전환에 적합하다.

 

2) 2D Freeform Directional

- 다른 방향과 같은 방향이 함께 있는 경우

- 애니메이션 클립이 특정 방향으로 재생되며, 애니메이션이 위치에 따라 자연스럽게 혼합이 되어야 할 때 사용된다.

- 애니메이션 클립이 설정된 각 위치를 기반으로 파라미터가 해당 위치와 얼마나 가까운지에 따라서 애니메이션을 혼합한다.

- 애니메이션이 위치에 따라 자연스럽게 이동하거나 전환된다.

 

3)  2D Freeform Cartensian

- 동일한 방향을 향하는 경우

- 한 방향에서의 애니메이션을 혼합할 때 추천한다. 

 

▶ Direct

- 모션마다 파라미터를 설정할 수 있다.

- 얼굴처럼 세세한 모션이 필요한 경우 애니메이션마다 파라미터를 설정하여 전환이 이루어지도록 한다.

 



해당 포스트는 고박사, [따라하면서 배우는 고박사의 유니티 기초], (2024, 11월 05일), 섹션 3. 유니티 3D 기초 강의를 참고하여 작성하였습니다.

 

 

Corner Unity

Editor : 니나노

728x90

관련글 더보기