Unity/Tip

뷰포트 영역 안에 있는지 검사하는 방법

코샵 2024. 3. 21. 15:18
반응형

게임 개발에서 랜덤하게 생성된 좌표가 화면 뷰포트 영역 안에 있는지 확인하는 것은 흔한 작업입니다. 예를 들어, 몬스터 등장 위치 설정, 아이템 스폰 위치 결정, 배경 효과 표시 위치 선정 등 다양한 상황에서 활용될 수 있습니다.

글에서는 IsInsideViewport 메서드를 사용하여 랜덤 좌표가 뷰포트 영역 안에 있는지 검사하는 방법을 소개하고, 실제 적용 예시, 추가 고려 사항, 활용 등을 자세하게 설명합니다

 

코드

public static bool IsInsideViewport(Vector3 point)
{
    Vector3 viewportPosition = Camera.main.WorldToViewportPoint(point);
    return viewportPosition.x is >= 0 and <= 1 && viewportPosition.y is >= 0 and <= 1;
}

해당 메서드는 3D 공간 좌표가 화면 뷰포트 영역 안에 있는지 확인하는 사용되는 메서드입니다.

 

작동 방식

  • 매개 변수로 입력 받은 월드 공간 좌표를 WorldToViewportPoint 함수를 통해 뷰포트 좌표로 변환
  • 뷰포트 좌표 범위 검사: 뷰포트는 0에서 1 사이의 값을 가지며, (0, 0) 왼쪽 아래, (1, 1) 오른쪽 위를 나타냅니다. 뷰포트 좌표가 0과 1 사이에 있는지 확인합니다. 
  • 조건 만족 여부 반환: 뷰포트 영역 안에 있으면 true, 그렇지 않으면 false 반환

뷰포트 영역

활용 예시

  • 몬스터 등장: 몬스터 등장 위치를 랜덤하게 설정하고, IsInsideViewport 메서드를 사용하여 화면 안에만 등장하도록 제어합니다.
  • 아이템 스폰: 아이템 스폰 위치를 랜덤하게 설정하고, IsInsideViewport 메서드를 사용하여 화면 안에만 스폰되도록 제어합니다.
  • 배경 효과: 배경 효과 표시 위치를 랜덤하게 설정하고, IsInsideViewport 메서드를 사용하여 화면 안에만 표시되도록 제어합니다.