소소한 나의 하루들

2d 플랫포머(1) - 프로젝트 준비 본문

개발/유니티

2d 플랫포머(1) - 프로젝트 준비

소소한 나의 하루 2024. 1. 21. 21:26

출처: https://youtube.com/playlist?list=PLO-mt5Iu5TeYI4dbYwWP8JqZMC9iuUIW2&feature=shared

 

📚 유니티 기초 강좌

유니티 게임 개발을 배우고 싶은 분들을 위한 기초 강좌

www.youtube.com

먼저 2d 타입의 유니티 프로젝트를 생성하면 에디터의 Hierarchy 창에는 Camera 오브젝트만 있다.

2D에서는 Light이 없어도 보이기 때문에 기본값으로 Light 오브젝트가 없는 것이다.

 

Camera에서 배경 색상 설정 가능하다.


#1. 스프라이트

Hierarchy 창에서 2d Object 타입의 오브젝트를 생성한다.

SpriteRanderer 컴포넌트 : 스프라이트를 보여주는 컴포넌트

 

Camera 오브젝트의 컴포넌트에서 Size를 조절해서 Game 화면을 줌인 줌아웃 할 수 있다.


#2. 렌더 순서

2d는 기본적으로 x축 y축 2개의 축만 존재한다.

그렇지만 Scene 창에서 2d를 클릭하면 3d로 x축까지 확인할 수 있다. 그렇지만, z축을 움직여도 2d이기 때문에, 실제 game에 보이는 화면에는 달라지는 것이 없다.

 

Main Camera 오브젝트의 컴포넌트에서 Projection 옵션 : Orthographic이 기본값

그 이유는 현재 Main Camera가 **Orthographic(원근법이 없는 정사영 투시)**이기 때문이다.

[Projection: Orthographic] *2d는 원근법이 없다고 가정한다.

그렇지만, Orthographic이 아닌 Perspective로 바꾸게 되면, 원근법이 적용되어서 Scene에서 z축을 조작할 때 Game 화면에서도 원근법에 따라 작아졌다 커졌다 반영된다.

 

그리고 Sprite Renderer 컴포넌트에서 이미지 색상 변경이 가능하다.

 

2d에서는 2개 이상의 오브젝트가 서로 겹칠 때 누가 먼저 보일 것인지’에 대해 여러 방법을 사용할 수 있다.

1. z축을 움직인다.

2. Sprite Renderer 컴포넌트의 Order in Layer 옵션을 설정한다. (값이 클수록 비교적 위로 얹어진다)

Sorting Layer 옵션을 이용해서 배경은 배경 오브젝트끼리의 우선순위/캐릭터는 캐릭터끼리의 우선순위 등을 레이어 별로 구분할 수 있다.


#3. 물리적용

스프라이트 이미지 파일은 드래그로 옮기거나 import하여 불러온다.

 

에셋 활용: https://assetstore.unity.com/packages/2d/characters/simple-2d-platformer-assets-pack-188518

 

Simple 2D Platformer Assets Pack | 2D 캐릭터 | Unity Asset Store

Elevate your workflow with the Simple 2D Platformer Assets Pack asset from Goldmetal. Find this & more 캐릭터 on the Unity Asset Store.

assetstore.unity.com

2d 프로젝트에서는 자동으로 이미지파일의 Texture Type이 Sprite (2D and UI)로 설정된다.


#4. 픽셀아트 조정

1. 이미지 파일을 클릭하고 Inspector창에서 확인하면, Advanced에서 Filter Mode에서 Point로 설정해준다.

불러온 도트 이미지는 무조건 Filter Mode를 Point (no filter)로 설정해줘야한다.

2. 도트 그래픽에서는 불러온 이미지의 Inspector에서 Default의 Compression(압축률)을 None으로 설정한다. (None으로 설정하지 않으면, 색상도 압축되어 변하기 때문)

 

Scene의 격자 한 칸과 사용할 리소스의 한 칸을 맞춰주어야 이동 좌표나 초기 위치 등을 의도에 맞게 설정할 수 있다. (맵 이동 등)

3. 이걸 조정하는 방법은 이미지 리소스를 클릭해서 Inspector의 Pixel per Unit을 설정하는 것이다.

Pixel per Unit은 Scene 화면 상의 격자 1칸(=1Unit)에 Pixel 몇개가 들어가는지를 설정하는 것이다.

이미지 리소스의 크기에 맞춰서 Pixel per Unit을 설정하면 된다.

ex) 이미지 크기가 32px라면 Pixel per Unit을 32로 설정한다.

 

Pixel per Unit을 설정해준 다음, Position을 조절하여 Scene 상의 오브젝트 위치를 조정해줄 수 있다.


#5. 물리 적용

2D이므로 Box Collider 2D 컴포넌트를 추가한다.

물리 시스템은 2D가 따로 존재한다.

Collider 2D를 사용하면 충돌박스가 생성되는데, 상황에 맞게 충돌박스의 크기를 조정해주면 된다. 다른 오브젝트들에도 마찬가지로 Colllider 2D로 충돌박스 컴포넌트를 설정해준다.

 

그리고 캐릭터에는 물리효과를 받기 위한 RigidBody 2D 컴포넌트를 추가해준다. (3d에서는 RigidBody)

 

만약 위에서 타입맵과 캐릭터의 Anchor를 조정하여 위치를 맞춰주었음에도, 충돌박스의 크기를 조정해주었음에도 간혹가다 캐릭터와 타일맵 사이 아주 작은 틈이 생겼을 수 있다.

그럴 때는 Edit 메뉴>Project Setting>Physics 2D에서 Default Contact Offset을 확인한다.

Default Contact Offset은 충돌 여백을 설정할 수 있다.

Comments