이 기사 는 4.3이 나오기 전에도 유용한 설명을 제공합니다.
“픽셀 아트”모양을 원한다면 카메라의 직교 크기가 매우 중요합니다. 이것이 Unity에서 2D 네일 링의 가장 까다로운 부분입니다.
직교 크기는 카메라 투영 상반부에 포함 된 월드 단위 수를 나타냅니다. 예를 들어, 직교 크기를 5로 설정하면 뷰포트의 수직 범위에는 정확히 10 단위의 월드 공간이 포함됩니다. 가로 범위는 디스플레이 종횡비에 따라 다릅니다.
스프라이트 쿼드는 1 단위입니다. 즉, 직교 크기는 뷰포트에 세로로 쌓을 수있는 스프라이트 수를 2로 나눈 값을 나타냅니다.
픽셀 아트를 깨끗하게 보이게하려면 스프라이트 소스 텍스처의 각 픽셀이 뷰포트 디스플레이에 1 : 1로 매핑되어야합니다. 소스 픽셀을 건너 뛰거나 두 배로 늘리기를 원하지 않으면 스프라이트가 왜곡되어 "더러워"보입니다. 이 1 : 1 비율을 보장하는 요령은 수직 화면 해상도를 스프라이트의 픽셀 높이로 나눈 정사영 크기를 설정하는 것입니다.
960x640에서 실행 중이고 64x64 스프라이트를 사용한다고 가정 해 봅시다. 수직 화면 해상도 (640)를 스프라이트 (64)의 픽셀 높이로 나누면 640 픽셀에 수직으로 쌓을 수있는 64x64 스프라이트의 수가 10이됩니다. 직교 크기는 반 높이이므로이 경우 대상 직교 크기는 5 (1/2)입니다. 다음과 같아야합니다.
직교 크기를 해당 대상의 절반 또는 두 배로 설정하면 스프라이트의 세로 크기가 여전히 뷰포트의 세로 크기로 균등하게 분할되므로 사용 가능한 결과를 얻을 수 있습니다. 그러나 직교 크기를 잘못 설정하면 일부 픽셀이 건너 뛰거나 두 배가되며 실제로 매우 나빠 보일 것입니다.
가변 해상도
깨끗한 픽셀 아트를 렌더링하기 위해 고정 된 단일 해상도로 제한 할 필요는 없습니다. 가변 해상도를 처리하는 가장 간단한 방법은 현재 수직 해상도 및 알려진 (고정 된) 스프라이트 크기에 따라 직교 크기를 설정하는 사용자 지정 스크립트를 카메라에 연결하는 것입니다 .
// set the camera to the correct orthographic size
// (so scene pixels are 1:1)
s_baseOrthographicSize = Screen.height / 64.0f / 2.0f;
Camera.main.orthographicSize = s_baseOrthographicSize;
이것은 간단한 수정이지만 단점이 있습니다. 화면 해상도가 낮아짐에 따라 화면이 점점 작아지고 스프라이트가 점점 더 많은 화면을 차지하게됩니다. 이는 소스와 화면 픽셀 사이에 1 : 1 비율을 유지 한 결과입니다. 64x64 스프라이트는 1920x1200보다 640x480에서 더 분명한 공간을 차지합니다. 이것이 문제인지 아닌지는 특정 게임의 요구에 달려 있습니다.
스프라이트가 화면 해상도에 관계없이 동일한 겉보기 크기를 유지하려면 직교 크기를 고정 값으로 설정하고 화면 해상도에 관계없이 그대로 두십시오. 단점은 스프라이트에 더 이상 1 : 1 소스-스크린 픽셀 비율이 없다는 것입니다. 대상 해상도의 정확히 절반 또는 정확히 두 배인 해상도 만 허용하면 그로 인한 악영향을 완화 할 수 있습니다.
(일부 강조 추가)
높이 해상도를 스프라이트 크기로 나눌 수 있으면 분명히 더 잘 작동하지만 그렇지 않은 경우에도 여전히 적절한 결과를 얻을 수 있습니다.
TL; DR :cameraSelf.orthographicSize = screenH / (float)spriteSize / 2f;