게임 개발에서 랜덤하게 생성된 좌표가 화면 뷰포트 영역 안에 있는지 확인하는 것은 흔한 작업입니다. 예를 들어, 몬스터 등장 위치 설정, 아이템 스폰 위치 결정, 배경 효과 표시 위치 선정 등 다양한 상황에서 활용될 수 있습니다.
이 글에서는 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 메서드를 사용하여 화면 안에만 표시되도록 제어합니다.
'Unity > Tip' 카테고리의 다른 글
다이얼로그 구현하기 (0) | 2024.05.17 |
---|---|
Unity 코드 문서화 : summary 태그 활용 (2) | 2024.04.26 |
콜라이더 충돌 검사 : Physics.Overlap vs NonAlloc (0) | 2024.01.05 |
유니티의 메타(meta) 파일은 무엇인가? (0) | 2023.12.22 |
AssetDatabase 클래스를 사용하여 스크립트에서 에셋 생성 및 수정 (0) | 2023.12.21 |