정리

(유니티 2D) 카메라 사이즈와 Pixels Per Unit

무명의 공룡 2017. 12. 28. 14:35

그림이 나올때까지 큰 작업들을 하기가 애매해서 여태까지 따로 배우진 않았지만 궁금했던 부분들에 대해 알아보고 적용중입니다.




카메라 사이즈와 Pixels Per Unit에 대해서


유니티 2D의 기본 설정은 카메라 사이즈가 5로 되어있고 Pixels Per Unit은 100으로 되어 있습니다.


이걸 냅둔채로 도트 그래픽 게임을 만들려고 하면 상당히 힘듭니다.


그리고 그 힘든 상태로 제가 하고 있었지요.


모바일을 염두해서 9:16 비율로 하니까 좌우가 -2.62~2.62였나, 아무튼 이런 작으면서도 애매한 크기를 가진데다 UI 캔버스로 UI를 배치하면 그건 또 1080 x 1920 비율로 이루어지니 헷갈리기도 하고 다루기가 많이 불편합니다.


그래서 개선시키고자 알아보니 저 둘을 바꿔줄 필요가 있고 Pixels Per Unit은 3D 모델 다룰 때의 Scale factor와 비슷한 기능이라는 것을 알았습니다.


먼저 카메라 사이즈의 경우 크게 2가지의 용도에 따라 다르게 수치를 입력합니다.


1도트, 혹은 일정 크기를 1로 잡을 것인지, 실제 목표 해상도와 일치시킬 것인지.


전자의 경우 맵이 넓고 움직이거나 블록 단위로 무언가를 할때 제작에 용이합니다. 전반적으로 상대적인 요소를 많이 다룰 때 쓰면 좋으며 유니티 거리 1단위의 변화가 중요할 수록 카메라 사이즈를 작게 하면 됩니다.


후자의 경우는 화면이 거의 움직이지 않거나 정적인 공간 내에서 무언가를 할 때 용이합니다. 전반적으로 절대적인 요소를 다룰 때 편하며 1단위의 변화보단 실제 크기와의 동기화가 중요할 때 좋습니다.


이 게임의 경우 대체적으로 정적인 공간 내에서 게임이 이루어지기 때문에 후자를 선택했습니다.


UI 캔버스 내에서 UI배치와 일치시켜 개발 환경을 보다 편하게 만들고 게임적으로도 상대적인 요소들을 활용할 부분들이 그리 많지 않기 때문입니다.


그래서 후자일 때 카메라 사이즈의 공식은 (목표 해상도 높이/2) 이기에 960으로 주었습니다.


이렇게 되면 카메라의 위치가 0, 0이고 게임뷰의 비율이 9:16이라는 가정 하에 x는 -540~540, y는 -960~960내에서 좌표를 가집니다.


만약 0~1080, 0~1920으로 가지게 하고 싶으면 카메라의 위치 각각 540, 960 만큼을 옮기시면 됩니다.



이어서 Pixels Per Unit의 경우 거리 1당 몇개의 픽셀을 뿌릴 것이냐는 말입니다.


만약 1x1 짜리 이미지를 유니티에서 불러와 Pixels Per Unit을 1로 설정한 후 2D Sprite로 그려보면 Scale이 1, 1 이라는 가정 하에 유니티 거리로 1x1만큼의 크기로 그려져 있는 것을 볼 수 있습니다.


3D 모델링의 Scale factor처럼 원본 파일에 직접 세팅해 주는 요소이기 때문에 다른 2D 이미지들간의 해상도가 있어도 관리하기 편하게 해줍니다.


위 카메라 사이즈 설정과 더불어 이 둘을 같이 설정해 주면 이후 작업환경에 많이 편해집니다.




이해를 돕기위한 gif


1x1 크기의 이미지를 Pixels Per Unit을 1로 설정한 후 x축으로 -1, y축으로 -2만큼 1씩 이동시킨 모습.



Icicle Game의 경우 환경은 1080x1920이지만 전반적인 그래픽은 그의 20%인 216x384 크기 내에서 그려집니다.


여기서 Pixels Per Unit을 1로 잡으면 오브젝트를 전부 5배로 크게 해주어야 할 필요가 있지만 Pixels Per Unit를 0.2로 잡아두면 알아서 5배로 커져서 그려집니다.


만약 특정 부분엔 더 고퀄리티가 요구되어 1080x1920 크기의 30%나 그 이상의 해상도로 그려진게 있더라도 Pixels Per Unit을 그에 맞춰 설정하면 별도의 스케일 조정 없이 게임 내에선 동일한 크기로 그려지는 이미지들을 볼 수 있습니다.