본문 바로가기
Unity

[Unity3D] Pixel Perfect 공식

by Aducssini 2019. 5. 15.

2D 게임을 제작할 때, 난관에 부딪히는 부분 중에 하나이다. 

 

유니티는 내부 크기를 사용하여 스케일과 위치를 정수로 구분한다. 

 

1, 2, 3, 4  등등등..  

 

이게 그림 크기로 간다면 매우 애매한 상황이 벌어지는 경우가 많다.

 

120 * 120 pixel로 구분하여 그래픽에서 넘겨 받으면 

2D sprite 오브젝트로 옮겨 놓게 되는데, 

허공에 그냥 떠있는 느낌이다.  

 

여기에 카메라 라는 개념이 들어간다면, 더더욱 문제가 된다. 

 

카메라 크기? 카메라 위치? 등등....  머리아프다.

 

"그래픽 에서는 어? 해상도 안맞는데?" 

같은 이야기를 하는데 정작 제작하고 있는 사람은 이유를 전혀 모르겠는 상황이 나온다. 

 

이때 참으로 많이 해맸는데 공식이 있어 설명한다. 

 

유니티 Pixel Perfect 공식

 

  카메라 사이즈 = 이미지 높이 * (1/pixel per unit) * 0.5

 

 

이게 무슨 소리인가 하니, 

 

유니티에서 먼저 해상도를 정해 놓는다. 

 

 

예시는 아이폰 XR    1792 * 828 

아무 해상도든, 높이가 중요하다. 

 

그리고 확인을 위하여 해상도와 같은 그림 파일을 준비했다. 

 

 

 

해상도와 동일한 크기의 그림 크기다.

 

그림 파일을 

 

pixel per Unit은 이곳을 말한다.

pixel per Unit은 상대적인 따라서 pixel의 분포도를 나타낸 지표라는데.

아...  뭔지 모르겠고,  

일단은 100인 것을 확인한다. (디폴트 값이 100이다)

 

이것을 그대로 씬에 배치를 하면, 

좌측이 Scene 우측이 Game //    우측의 이미지의 전체가 보이지 않는다.

역시나 카메라가 그림을 더 가까히 잡고 있다. 

여기서 카메라 위치나 크기를 조절하거나 거리를 조절하게 되는데,

 

Size를 잡고 미세하게 조정해본적이.....  

Projection은 2D라면 Orthographic일테니, 

Size를 구하기만 하면된다.  

이때, 명확한 카메라 크기를 알아내는 공식인것이다. 

 

카메라 사이즈 = 이미지 높이 * (1/pixel per unit) * 0.5

8.9 = 1792 * (1/100) * 0.5

 

카메라 사이즈는 8.9, 

 

Size를 변경
정확히 맞아들어가는 것이 확인된다. 

  ** 좌표를 명확히 확인 해야할듯;

'Unity' 카테고리의 다른 글

[Unity3D] Random.Range 범위  (0) 2019.06.14
[Unity3D] 게임 저장은 Json을 쓰기로...  (0) 2019.05.22
[Unity3D] 싱글톤 (MonoSingleton)  (0) 2019.05.16
[Unity3D] C# CSV 사용법  (0) 2019.05.16
[Unity3D] 저장 경로  (0) 2019.05.15