📝 카메라가 비추는 공간에 오브젝트가 있는지 검사
오브젝트가 카메라가 비추는 공간 안에 있는지 검사를 어떻게 하면 좋을까?
🔖사용방법
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
'게임개발 > Unity' 카테고리의 다른 글
[Unity] 스크립트로 AudioMixerGroup 찾기 (FindMatchingGroups) (0) | 2025.04.17 |
---|---|
[Unity] 유니티 에디터 전용 코드 빌드 오류 해결하기 (전처리 #if UNITY_EDITOR) (0) | 2025.04.16 |
[Unity] Action의 활용, 유니티 애니메이션 관리와 확장 방법 (0) | 2025.04.14 |
[Unity] Lerp를 사용한 자연스러운 회전 (0) | 2025.04.09 |
[Editor] 읽기 전용 어트리뷰트 (0) | 2025.04.08 |