기록 보관소

[Unity/유니티] 기초-2D 플랫포머: 프로젝트 준비하기[B13] 본문

유니티 프로젝트/2D 플랫포머

[Unity/유니티] 기초-2D 플랫포머: 프로젝트 준비하기[B13]

JongHoon 2022. 2. 8. 20:11

개요

유니티 입문과 독학을 위해서 아래 링크의 골드메탈님의 영상들을 보며 진행 상황 사진 또는 캡처를 올리고 배웠던 점을 요약해서 적는다.

현재는 영상들을 보고 따라하고 배우는 것에 집중할 것이며, 영상을 모두 보고 따라한 후에는 개인 프로젝트를 설계하고 직접 만드는 것이 목표다.

https://youtube.com/playlist?list=PLO-mt5Iu5TeYI4dbYwWP8JqZMC9iuUIW2 

 

유니티 강좌 기초 채널 Basic

유니티 개발을 처음 시작하시는 입문자 분들을 위한 기초 채널. [ 프로젝트 ] B00 ~ B12 (BE1) : 유니티 필수 기초 B13 ~ B19 (BE2) : 2D 플랫포머 B20 ~ B26 (BE3) : 2D 탑다운 대화형 RPG B27 ~ B37 (BE4) : 2D 종스크롤

www.youtube.com


2D 플랫포머: 프로젝트 준비하기[B13]

1. 프로젝트 생성

 

새로운 프로젝트로 Unity 2D Example을 생성했다
실행 직후의 모습. 3D와는 달리 2D에서는 계층구조(Hierachy)에 Light가 없고 Main Camera만 존재한다.


2. 스프라이트

새로운 스프라이트를 생성하고 Inspector창의 Sprite Renderer에서 기본 스프라이트 중 하나를 선택해주었다.


3. 렌더 순서

2D에서도 Z축은 존재한다.
스프라이트의 Z축을 옮겼음에도 Game화면은 그대로 유지된다.

  • 위 캡처에서 Z축을 옮겼음에도 Game화면에 변화가 없는 이유는 카메라가 Orthographic으로 설정되어있기때문이다. Orthographic은 원근법이 없는 정사영 투시를 한다. Perspective로하면 원근법이 적용된다.

스프라이트의 Z축을 변경하고 카메라를 Perspective로 설정 변경한 모습.
새로운 스프라이트를 하나 더 만들고 크고 빨간 것은 Big, 작고 파란 것은 Small로 이름을 바꾸었다. 둘 다 위치는 0 0 0으로 완전히 겹친다.
Big의 Order in Layer의 값을 1로 늘리니 Small이 더이상 보이지 않는다.

  • 레이어 순서를 변경하는 방법은 2가지가 있다. 첫번째는 그냥 Z축을 이용해서 이동시키는 방법이고, 두번째는 오른쪽 Inspector창의 Sprite Renderer에 있는 Order in layer의 값을 올리는 방법이다.
  • Order in Layer를 조정할 경우, 위의 Sorting Layer를 이용해서 더 세부적으로 정렬할 수 있다.

4. 픽셀아트 조정

4셀 아트를 넣기 전 에셋 팩 다운로드하기
적용

  • 에셋은 유튜브에 게시된 링크를 통해서 다운로드 하였다.

에셋을 적용시킨 모습
스프라이트의 FilterMode를 Point가 아닌 Bilinear나 Trilinear로 하면 픽셀아트가 뿌옇게 흐려진다.
스프라이트의 Inspector창

  • 픽셀아트 스프라이트의 FilterMode와 Compression(압축률)은 각각 Point와 None으로 설정하는 것이 좋다. FilterMode는 위의 캡처처럼 흐려지게되고, Compression은 압축에 따라 색상에 약간 변형이 주어질 수 있기때문이다.

이미지 크기에 맞춘 Pixel Per Unit으로 스프라이트들의 X, Y좌표를 정수형태로 설정한 모습

  • 또한 Pixel Per Unit도 이미지 크기에 맞춰서 설정하면 배경의 칸들과 딱 맞게 떨어져서 배치하는데 한결 편해질수 있다. 위 이미지는 플레이어는 0/0, 왼쪽 바닥은 -1/-1, 중간은 0/-1, 오른쪽은 1/-1로 설정한 모습이다.

5. 물리 적용

2D용 Box Collider와 Rigidbody가 따로 존재한다
Floor 스프라이트들에 BoxCollider를 적용하고, Player 스프라이트에 BoxCollider와 RigidBody를 적용
실행하니 Player가 떨어져서 Floor에 닿았다
실행하고 보니 작은 틈이 있는 모습
틈이 있는 이유는 Default Contact Offset(충돌여백)때문
0을 입력하니 0.0001로 적용되었고 틈이 확실히 줄어들었다.