"우리 중에 인물이 없는 것은 인물이 되려고 마음먹고 힘쓰는 사람이 없는 까닭이다. 인물이 없다고 한탄하는 그 사람 자신이 왜 인물이 될 공부를 아니 하는가." – 도산 안창호

2013/05/22

폴리곤을 화면상에서 텍스처 크기대로 나오게 하기

돈이 없어서 ngui 비슷하게 직접 ui를 만들다가 텍스처가 실제 크기대로 화면에서 1:1로 나오게 해야 할 일이 생겨서 만들어 봤습니다. 별 건 아닌데 나중에 까먹고 어버버 할까 봐 여기다가 적어 둡니다. 일단 등ㅉㅏ… 아니 코드를 봅시다.

float screenHeight = ( float )Screen.height;

Vector2 scale = new Vector2( textureWidth / screenHeight, textureHeight / screenHeight ) * ( uiCamera.orthographicSize * 2.0f );

transform.localScale = new Vector3( scale.x, scale.y, transform.localScale.z );

일단 직교카메라가 있어야 하며, 크기 조정하려는 텍스처의 크기를 알아야 하고, 폴리곤의 크기는 월드 좌표로 너비와 높이 모두 1.0f 이여야 합니다. 먼저 텍스처의 크기와 화면 픽셀 높이를 가지고 텍스처가 현재 화면에서 차지하고 있는 비율(현재 직교카메라이기 때문에 화면 좌표도 됩니다.)을 계산합니다. 직교카메라의 크기(orthographicSize)는 월드 좌표에서 orthographicSize * 2.0f 이며 이를 이용해서 여기에 위에서 계산한 비율을 곱해서 크기를 계산합니다.

이렇게 해서 나온 크기를 현재 transform의 크기에 넣으면 끗. 화면 크기가 변해도 크기를 계산해서 게임화면에서는 같은 크기로 나옵니다.

윈도우에서는 버텍스 실수좌표와 텍스처 픽셀좌표 차이로 인해 픽셀이 밀리는 경우가 생기는데 그럴땐 마법의 숫자 0.5f를 사용하면 됩니다. 자세한 내용은 http://blog.daum.net/gamza-net/16 여기서 보시면 되겠습니다.

댓글 남기기 | cat > 타닥타닥 | tag >

댓글 남기기

* 표시된 곳은 반드시 입력해주세요