유니티의 좌표계는 아래와 같이 3가지가 있다.
1. World Point
: 실제 gameObject의 transform.position 값
2. Viewport Point
: 카메라 내에서 오브젝트가 위치하고 있는 비율 ( 따라서 값이 0~1 사이의 값으로 나타난다 )
3. Screen Point
: 카메라 내에서 오브젝트의 위치를 해상도를 기준으로 좌표를 매긴 값
ex) 1920 x 1080 해상도에서는 (0, 0) 부터 (1920, 1080) 까지 표현할 수 있다.
즉, World Point 값 x Viewport Point 값 = Screen Point 값이 된다.
* Viewport Point를 활용하면 현재 오브젝트가 화면 내에 나타나지 않을 때 어디에 위치해 있는지 알 수 있다.
x < 0 : 화면 왼쪽
x > 1 : 화면 오른쪽
y < 0 : 화면 아래쪽
y > 1 : 화면 위쪽
* Input.GetMouseButtonDown()는 괄호 안에 0이라면 좌클릭, 1이라면 우클릭일 때 호출되는 함수이다.
위의 함수를 통해 화면 내에 클릭된 곳의 좌표를 가져올 수 있는데, 가져오는 값은 Screen Point로 받아온다.
따라서 이 좌표를 그대로 가져와서 이 위치에 오브젝트를 생성해주는 코드를 짜게되면 원하는 위치에 오브젝트가
생성되지 않는다. ( 좌표를 가져오는 법은 Input.mousePosition 으로 가져올 수 있다 )
Screen Point를 World Point로 바꾸어주면 되는데, 이는 Camera.main.ScreenToWorldPoint(Screen Point)를 통해 가능하다.
다만 이렇게 변환된 World Point는 z 값이 -10f이 되므로, z 값을 0f 으로 바꿔주는 처리가 필요하다.
위처럼 Screen Point -> World Point 뿐만 아니라 위의 세 가지 좌표계 모두 서로 변환될 수 있다.
'Unity 공부시작' 카테고리의 다른 글
유니티 :: 컬렉션 ( List, Stack, Dictionary ) (0) | 2019.01.11 |
---|---|
유니티 :: 프로퍼티와 싱글턴 오브젝트 (0) | 2019.01.09 |
유니티 :: 이벤트 함수 (0) | 2019.01.07 |
유니티 :: prefab에 오브젝트 할당 (0) | 2019.01.07 |
유니티 :: Vector3와 Translate // 대각선 움직임이 더 빠른 경우 (0) | 2019.01.02 |