본문 바로가기
게임개발/Unity

[Unity] 카메라공간에 오브젝트가 있는지 검사 Camera.WorldToViewportPoint

by youcheachae 2025. 4. 15.

📝 카메라가 비추는 공간에 오브젝트가 있는지 검사 

오브젝트가 카메라가 비추는 공간 안에 있는지 검사를 어떻게 하면 좋을까?

 

🔖사용방법

Camera.WorldToViewportPoint는 3D 월드 공간의 좌표를 2D 스크린(뷰포트) 좌표로 변환해 준다

Vector3 viewPos = mainCamera.WorldToViewportPoint(position);
  • 매개변수 : 기준이 되는 위치
  • 반환값 : 반환되는 Vector3 값은 (x, y, z) 형태
    • x, y : 화면상의 좌표 (0,0은 화면 왼쪽 하단, 1,1은 오른쪽 상단)
    • z : 카메라로부터의 거리 (양수면 카메라 앞, 음수면 카메라 뒤)

 

 

  • 카메라 안에 오브젝트가 있다면
    • Camera.WorldToViewportPoint는 0부터 1 사이의 값을 반환하게 된다
  • 카메라 밖에 오브젝트가 있다면
    • Camera.WorldToViewportPoint는 0 미만 1 초과의 값을 반환하게 된다

 

📝 사용예시

// 카메라 범위 안에 있는지 
private bool IsInCameraRange(Vector3 position)
{
    // 좌측하단 0,0 우측상단 1,1
    Vector3 viewPos = mainCamera.WorldToViewportPoint(position);

    if (viewPos.x < 0 || viewPos.x > 1 || viewPos.y < 0 || viewPos.y > 1)
        return false;

    return true;
}

- Vector3 타입의 기준위치가 카메라 안에 있다면 true를, 밖에 있다면 false를 반환하는 함수이다.


유니티 공식문서

https://docs.unity3d.com/kr/530/ScriptReference/Camera.WorldToViewportPoint.html

 

Camera-WorldToViewportPoint - Unity 스크립팅 API

Transforms position from world space into viewport space.

docs.unity3d.com