반응형
Unity에서 WorldToScreenPoint 메서드는 월드 공간의 지점을 스크린 공간의 지점으로 변환하는 데 사용됩니다.
public Vector3 WorldToScreenPoint(Vector3 position)
- position : 월드 공간의 지점입니다.
이 메서드는 다음과 같은 스크린 공간의 지점을 반환합니다.
- 스크린 공간의 x좌표는 worldPoint의 x좌표와 카메라의 LookAt 방향의 x좌표의 비율에 해당합니다.
- 스크린 공간의 y좌표는 worldPoint의 y좌표와 카메라의 LookAt 방향의 y좌표의 비율에 해당합니다.
예제
다음은 WorldToScreenPoint 메서드를 사용하는 예제입니다.
// 월드 공간의 좌표 (0, 0, 1)을 스크린 공간의 지점으로 변환합니다.
Vector3 screenPoint = Camera.main.WorldToScreenPoint(new Vector3(0, 0, 1));
// 스크린 공간의 지점을 출력합니다.
Debug.Log("screenPoint: " + screenPoint);
이 코드를 실행하면 다음과 같은 출력이 나타납니다.
screenPoint: (0.500000, 0.500000, 0.000000)
변환 공식
WorldToScreenPoint 메서드는 다음과 같은 공식을 사용하여 스크린 공간의 지점을 계산합니다.
screenPoint.x = (worldPoint.x / worldPoint.z) * Screen.width * 0.5f + Screen.width * 0.5f;
screenPoint.y = (worldPoint.y / worldPoint.z) * Screen.height * 0.5f + Screen.height * 0.5f;
위 공식은 이해를 돕기 위해 WorldToScreenPoint 메서드가3D 공간의 월드 좌표를 2D 스크린 좌표로 변환하는 공식을 간략하게 나타낸 것으로, 실제로는 카메라의 위치와 방향, 그리고 카메라의 투영 영역(FOV, Aspect Ratio 등)을 고려하기에 복잡합니다.
결론
WorldToScreenPoint 메서드는 월드 공간의 지점을 스크린 공간의 지점으로 변환하는 데 유용한 메서드입니다. 이 메서드를 사용하여 3D 게임에서 카메라를 사용하여 스크린에 객체를 표시할 수 있습니다.
'Unity' 카테고리의 다른 글
Camera : Orthographic과 Perspective (0) | 2023.12.13 |
---|---|
Animator State Transition : Has Exit Time (0) | 2023.12.12 |
화면 위치에 해당하는 Ray 생성 : Camera.main.ScreenPointToRay (0) | 2023.12.07 |
Unity의 Character Controller : 간단하게 움직임 구현 (0) | 2023.12.05 |
Unity의 Collision에 관하여 (0) | 2023.11.30 |