본문 바로가기

게임 개발 공부 정리

[Unity] 2D 게임 따라 만들기 1 - 20 09 21 ~ 22

이번 시리즈에서는 유튜버 골드메탈님의 강좌를 따라 하면서 배우는 내용들을 요약한다.

 

SpriteRenderer

오브젝트에서 스프라이트를 보여주는 역할을 하는 컴포넌트이다.

이미지의 색상을 입힐 수 있다.

 

Camera

- Orthographic 모드 : 원근법이 없는 정사영 투시이다. 2D 카메라는 이 설정으로 되어있다.

- Perspective 모드 : 원근법이 적용되게 된다.

- Size : 값을 조절하여 전체 크기를 조절할 수 있다.

 

겹쳐있는 스프라이트 간에 보이는 순서를 정하는 방법

- 1: Z축을 변경하여 앞과 뒤를 정한다. 장점으로는 3D로 보았을 때 오브젝트 간의 depth를 직관적으로 볼 수 있게 된다.

- 2: Order in Layer를 사용하여 순서를 정한다. 값이 높을수록 더 앞에서 보이게 된다.

- 3. Sorting Layers를 사용하여, 역할별 레이어를 정의해서 보이는 순서를 정할 수 있다.


픽셀아트(도트) 조정

스프라이트 에셋을 누르면 인스펙터 창에 설정이 나타나게 된다.

Advance > Fillter Mode : 스프라이트에 다양한 필터 효과를 적용시킨다.

- Bilinear / Trilinear : 그래픽을 압축시키는 방식으로 표현하는 것으로, 스프라이트를 흐리게 만든다.

- Pointer (no Fillter) : 스프라이트의 있는 그대로를 출력하게 하여 깨끗하게 표시되게 한다. 도트 그래픽의 게임에선 이걸 적용하는 게 필수이다. 하지만 큰 그림에는 이 모드를 적용 안 시켜도 된다.

 

Advance > Compression(압축 방식 설정)

- None ~ Hiogh Quality : 이미지를 압축하는 정도를 설정하는 건데, 없음이 선택되어 있지 않으면 도트 그래픽에서 색깔이 누렇게 변하게 되는 현상이 일어나게 되므로, none로 설정해준다.

 

Sprite Mode

- Pixels Per Unit : 유닛 한 칸에 픽셀이 몇 개가 들어가는지를 설정해주므로, 이미지 크기로 Pixel Per Unit을 설정해준다.

로직 계산이나 위치 계산을 할 때 훨씬 편하게 해 주므로 필수이다.

이 기능을 이용하여 땅 타일을 포함한 모든 스프라이트를 픽셀에 맞게 맞춰주고, 땅 타일을 x, y 0으로 모은 뒤, 1씩 더해주면 딱 맞아떨어지는 배치가 가능하다.


플레이어 옵젝한텐, RigidBody 2D와 박스 콜라이더를, 땅에게는 박스 콜라이더 컴포넌트를 넣는다.

 

낮고 작은 픽셀 그래픽의 게임을 만들때 분명 콜라이더를 딱 맞게 설정했는데 게임 상에서, 서로 충돌 시 여백이 생기게 될 때가 있다. 픽셀이 작은데 충돌 여백 값이 적용되어 틈이 생기기 때문이다.

그럴 때는 다음의 값을 수정해준다.

Project settings > Physics 2D - Default Contact Offset : 충돌 여백


아틀라스

애니메이션을 구현하기 위해서 한 에셋 스프라이트에 묶음으로 만든 형태

 

스프라이트 에셋 인스펙터

> 스프라이트 모드

- Single : 스프라이트를 하나로 취급한다.

- Multiple : 스프라이트가 애니메이션 목적으로 다양하게 나누어져 있을 때 사용한다.

- Polygon : 아직 몰름

 

> 스프라이트 에디터

- Slice > Automatic : 이미지를 분석해서 자동으로 잘라주는 모드

- Slice > Grid By Cell (Size/Count) : 입력한 사이즈대로 균일하게 자르는 모드

- Slice > Padding : 여백을 준다. 애니메이션 중, 여백이 필요한 애니가 있는데 그땐 Padding을 활용한다.

- 슬라이스를 한 후, 흰색 자름 선이 안 보일 때는, 색깔 반전 버튼으로 쉽게 확인할 수 있다.

- 여백을 위해서 보통은 오토매틱보다 그리드 바이 셀 사이즈/카운트를 많이 사용한다.

 

아틀라스를 사용하는 이유

Game 탭 > stat > Batches : 그래픽을 그리기 위해 메모리와 CPU를 사용한 횟수이다.

유니티에서는 이미지를 배치할 때, 아틀라스 내에 있는 스프라이트끼리는 배치를 하나만 소비하게 된다.

즉, 아틀라스를 많이 활용할수록, 더 적은 사용 횟수를 얻게 되므로, 최적화를 하게 해 준다.

모바일 게임에서는 이 기능을 훨씬 더 잘 활용해야만 한다.

 

Asperite로도 아틀라스를 만들순 있지만 무료로 아틀라스를 만들 수 있는 무료 에셋 링크

assetstore.unity.com/packages/tools/sprite-management/texturepacker-importer-16641


스프라이트 애니메이션

 

Animator

애니메이션을 관리하는 컴포넌트이다. 애니메이션 컨트롤러라고도 불린다.

애니메이션을 생성하면 애니메이터 에셋 또한 생성된다.

 

Animation Tab

애니메이션을 관리하는 탭이다.

Key Frame : 애니메이션 값을 가진 프레임을 뜻한다.

 

Animation Inspector

Loop Time (True/False) : 애니메이션을 재생할때 반복을 시킬건지, 한번 재생하고 끝낸건지 정한다.

 

애니메이션의 재생 시간을 조정 방법

1) 키 프레임 사이의 프레임 단위를 조정한다.

2) 애니메이션 탭의 해당 애니메이션 스테이트의 스피드 값을 조정한다.


Animator Tab

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

Entry : 게임이 시작할때를 뜻한다.

State 오른쪽 클릭 메뉴 - Set as Layer Default State : 선택된 스테이트를 기본 스테이트로 설정한다.


기타

 

Gizmos를 눌러서 3D 아이콘을 조절하여, 씬상에서 카메라 아이콘의 크기를 조절할 수 있다.

 

컴포넌트가 난잡하게 펼쳐져 있을 때 한눈에 보기 위해서는, Collapse All Components를 눌러서 모두 닫을 수 있다.