낑깡의 게임 프로그래밍 도전기

Unity Bounds로 오브젝트의 경계와 중심 구하기 본문

카테고리 없음

Unity Bounds로 오브젝트의 경계와 중심 구하기

낑깡겜플밍 2024. 5. 28. 17:46
반응형
SMALL

오브젝트의 모양이 복잡하더나 임의의 원점을 두거나 피벗이 오브젝트와 멀리 떨어져있는 상황에서 오브젝트의 위치를 찾아 컨트롤하기 힘든 경우가 생긴다

 

그럴 때 bounds를 활용하면 유용하다.

Bounds는 유니티에서 게임 오브젝트나 씬의 영역을 나타내는데 사용되는 개념( 오브젝트가 어떤 영역 안에 있는지를 쉽게 확인 가능)

예를 들어, 카메라가 어떤 오브젝트들을 비추고 있는지 확인하거나, 특정 영역 안에 어떤 오브젝트들이 있는지 확인할 때 유용함.

Bounds는 해당 영역의 중심점과 크기를 가지고 있어서 오브젝트들이 어디에 위치해 있는지와 그 크기를 파악하는 데 도움이 됨.

 

Bounds를 활용할 때 유용한 몇 가지 키워드

  1. Bounds.center: Bounds의 중심점을 나타내는 벡터.
  2. Bounds.size: Bounds의 크기를 나타내는 벡터.
  3. Bounds.extents: Bounds의 각 축별로 크기의 절반을 나타내는 벡터. 크기의 절반을 의미하기 때문에 실제 크기의 반지름과 같다고 볼 수 있어.
  4. Bounds.Contains(): 특정 지점이나 다른 Bounds를 포함하는지 확인하는 메서드.
  5. Bounds.Encapsulate(): 다른 Bounds나 지점을 포함하여 현재 Bounds를 확장시키는 메서드.
  6. Bounds.Intersects(): 다른 Bounds와 교차하는지 여부를 확인하는 메서드.

이런 키워드들을 활용해서 Bounds를 더 효과적으로 다룰 수 있음

 

 

나의 경우에는 많은 자식오브젝트를 가진 모델링이 있었고 원점(피벗)은 굉장히 멀리 있었다.

오브젝트를 생성하고 그 오브젝트 근처로 카메라를 설치하고 싶었으나 카메라의 트렌스폼 조정이 힘들었고 

레이로 쏘기에는 한계가 있다고 판단하였다.

 

처음엔 모든 메쉬콜라이더를 불러와서 중심점을 계산해서 배치하려했으나 수많은 자식들이 겹치면서 계산이 깔끔하게 되지 않아 임의의 첫번째 자식과 마지막 자식의 중간점을 찾아서 배치하도록하였다.

반응형
LIST