Unity 2D - 2. 아틀라스와 애니메이션

2023. 7. 20. 12:59C# & Unity 공부

아틀라스

오늘은 아틀라스를 분리해서 사용하는 방법으로 시작해 볼 것이다.

사진 파일을 보면,

여러가지 형태가 하나의 사진으로 합쳐져 있을 것이다.

이것을 분리해서 사용하는 방법을 알아볼 것이다.

 

아틀라스를 사용하는 이유를 알아보자.

Game창에 보면 Stats라는 것이 있다.

하나의 파일을 사용하면 Batches라는 것이 줄어들게 된다.

(Batch : 그래픽을 그리기 위해 메모리와 CPU를 사용한 횟수).

아틀라스의  스파라이트끼리는 Batch가 늘지 않는다.

 

=>요약하자면, 최적화를 위해서 해주는 것이다.

 

 

우선은 Unity창에서 사진을 선택 후 Inspector 창을 본다.

Sprite Mode를 Single이 아닌 Multiple로 선택을 해준다.

그 후에, Sprite Editor를 눌러주게 되면,

이러한 창이 뜨게 된다.

Sprite Editor를 만지다 보면 아래와 같은 것을 볼 수 있다.

하나하나씩 알아보자.

Automatic : 이미지를 분석해서 자동으로 잡아주는 모드

Slice 버튼을 누르고, Rgb버튼을 눌렀을 경우(Automatic)

Grid by Cell Size : 입력한 사이즈대로 균일하게 자르는 모드

 

지금 이 캐릭터 사진은 16X16에다가 1칸씩 여백을 남겨 놓았다.

(Padding은 여백을 나타냄)

Slice를 누르고, Rgb를 누른다면

이와 같이 나눠진다.

 

Cell By Count :  입력한 갯수대로 균일하게 자르는 모드이다.

Cell By Count

우선 Grid By Cell Size로 적용하고 Apply를 누르고 진행하겠다.

그러면, 원본 사진에 있는 화살표를 누르면

다음과 같이 자른대로 나누어서 사용할 수 있다.

 

우선은 다음 단계를 진행하기 앞서 아이템과 적 그리고 깃발 오브젝트를 우선 만들어주자.

Item 설정창

 

Enemy 설정창

 

Finish 설정창

 

설정 후

 

애니메이션

2D 게임을 보면 걸어다니든, 점프 할 때든 모양이 바뀌는 애니메이션 효과가 있다.

그것을 구현해 볼 것이다.

우선 Animation 폴더를 하나 만들어놓자.

 

그리고 원하는 애니메이션 사진들을 Ctrl + 클릭으로 다중클릭하여

 

 

Hierarchy에 있는 오브젝트에게 끌어서 넣으면

 

 

파일 창이 뜨게 되는데, 아까의 Animation 창에다가

걸어다니는 애니메이션이므로 Walk라고 저장해두자.

그러면,

 

 

보는 것과 같이, Animator 컴포넌트와 Animation 파일 안에는 저런 파일들이 생겼다.

왼쪽은 애니메이션 컨트롤러(=Animator 컴포넌트)이고, 오른쪽 Walk는 우리가 아까 만들어준 파일이다.

 

그러면 Animation 창을 꺼내보도록하자.

 

Window > Animation > Animation

 

그럼 아래와 같은 창을 볼 수 있다.

 

 

오른쪽에 있는 점 하나하나를 Key Frame이라고 한다.

Key Frame : 애니메이션 값을 가진 프레임

저 하나하나가 우리가 집어넣은 Sprite이다.

저 사이의 간격을 조절하면 원하는 속도의 애니메이션을 만들 수 있다.

 

만약 애니메이션 반복하는게 싫다면, Walk 애니메이션을 클릭한 뒤,

 

 

여기의 Loop Time을 해제하면 된다.

 

다음은 마찬가지로 몬스터와 아이템에도 애니메이션을 넣어보자.

 

애니메이터

플레이어는 처음에는 가만히 대기 상태에 있다가,

움직이면 걷는 모션을 실행해야 한다.

 

그래서 Idle(대기 상태)의 애니메이션도 만들고,

Player 오브젝트에 넣어주자.

 

그러면 오류가 발생한다. 처음 걷는 모션(Walk 애니메이션)이 나올 뿐,

우리가 또 집어넣은 대기 상태의 모션은 나오지 않는다.

이에 대해서 알아볼 것이다.

 

우선 Window > Animation > Animator 를 실행시킨다.

Window > Animation > Animator

 

그러면 아래와 같은 창이 뜨게 된다.

 

 

여기서는 어떤 상태가 되는가에 따라, 어떤 애니메이션을 실행시키는지 컨트롤러의 역할을 해준다.

 

여기서 Walk 같은 박스 하나를 State라고 한다.

State : 애니메이션 상태를 관리하는 애니메이터 단위이다.

 

Entry는 시작될 때 행하는, C# 스크립트로 비유하자면 Start() 같은 것이다.

Entry가 Walk state와 연결되어있으니, 걷는 모션이 나오는 것이다.

 

우리는 Idle state (대기 모션)으로 바꿀 것이다.

 

 

원하는 상태를 우클릭 후, Set as Layer Defaul State를 클릭해준다. (기본 상태로 잡겠다)

 

실행시키면 걷는 모션에서 대기모션으로 바꿔진다.

 

아까 Key Frame을 이용해 속도를 조절하는 방법이 있었지만, Animator 창을 꺼내면서 한 가지 방법이 더 생겼다.

 

 

바로 State의 speed를 건드는 것이다.

수치에 비례하여 올라가기 때문에 2면 애니메이션 속도가 2배가 되고,

0.5면 애니메이션이 2배 느려지게 된다.