[Unity] [의문] Camara.main.SceenToWorld() 는 왜 필요한가?

이훈·2024년 9월 3일

강의를 듣는데 의문이 들었다.
마우스포인터를 따라가는 오브젝트를 만드는데
마우스 포인터의 좌표를 받는 것이 아니라, 현재 메인 카메라가 바라보고 있는 마우스 포인터의 좌표를 받아 그 값을 적용하는 것이다.

하지만,

Vector2 mousePos = Camara.main.SceenToWorld(Input.mousePosition) ;    
Vector2 mousePos = (Input.mousePosition) ;

둘의 실행이 같은 것 아닌가?
마우스 포인터의 위치를 왜 메인카메라에서 바라보는 좌표값으로 바꿔야하는가?
굳이 필요한가 라는 의문이 들었다.

하지만 코드를 실행해보면 바로 알 수 있다.
사용자에게 제일 먼저 보여주는 것은 UI라는 것을
프로그램을 실행해서 주의깊게 보는 화면은 물체들이 상호작용하는 개발화면이다. 하지만 마우스 포인터의 위치는 실제로 UI 창 위에 있는 것이다.
( 사실 버튼이나 다른 UI의 상호작용을 생각하면 당연한 것이었다.)

그렇다면 UI 창이 없다면 똑같이 실행되는가?

아니다.
UI창을 생성하지 않아도 마우스포인터는 UI가 생성될 위치에 미리 있다.
내가 UI 캔버스를 만들지 않아도 UI가 생성 될 위치에 있는 것이다. 그렇기에 개발화면에서 마우스 포인터를 따라가는 오브젝트를 만들기 위해서는 UI가 아닌 메인카메라가 바라보는 좌표로 바꿔줘야 하는 것이다.

profile
안녕하세요

0개의 댓글