Metaverse/Unity

Raycast

onenewkong 2023. 4. 5. 17:34

 

Physics.Raycast

직선을 씬에 투영하여 대상에 적중되면 true를 리턴하는 물리 함수

캐스팅 성공 실패에 따른 결과만 리턴하는 간단한 형태에서 부터 대상과 Ray의 충돌에 관련된 자세한 정보를 (직선과 객체의 교차 정보. 거리, 위치, 캐스팅에 검출된 객체의 Transform에 대한 참조 등) 리턴하는 다양한 버전이 제공되고 있음

  • Ray 변수
  • RaycastHit 변수
  • Raycast 함수

 

Ray 구조체 사용법

: Ray는 직선의 시작점(origin)과 방향(direction)을 가지고 있는 단순한 구조체

시작점(origin)은 Vector3 타입의 월드 포지션이며 방향(direction)은 직선

 

 

Ray 생성 방법

1) new 이용해 직접 생성

Ray ray = new Ray(transform.position, transform.forward);

 

2) 카메라 뷰포트 중앙에서 시작하는 Ray와 같은 경우 헬퍼 함수 이용해 자동 생성

Ray ray = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0));

 

3) 스크린의 마우스 위치로부터 Ray 생성

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

 

✔️Ray는 사용할 때마다 업데이트되어야 함

 

 

RaycastHit

: 시선을 던져(Raycast) 특정 물체에 부딪혔을 때(Hit) 해당 물체에 대한 정보와 부딪힌 위치, 방향 등의 정보가 저장되는 곳을 'RaycastHit'라고 함

 

시선(Ray)을 던져 특정 물체에 충돌하는 것은 유니티 물리 엔진인 Physics에서 담당

 

Raycast 사용 방법

가장 일반적인 방법 중 하나는 Ray의 객체에 대한 히트 여부에 따라 true 또는 false를 리턴하고, out 파라미터로 RaycastHit를 리턴하는 버전을 사용하는 것

 

  • 생성된 Ray가 씬으로 발사되고 Ray에 충돌한 어떤 것이든 그것에 관한 충돌 정보가 RaycastHit 변수에 저장됨
  • 최대거리를 지정하여 Raycast 범위를 제한할 수 있음
  • 레이어에 따라 충돌체를 필터링하는 기능 있음
    • public LayerMask 변수를 생성
    • Raycast 함수에 LayerMask 변수를 넘겨줌

 

 

 

'Metaverse > Unity' 카테고리의 다른 글

Object Pool  (0) 2023.05.06
C# / 싱글톤 디자인 패턴  (0) 2023.05.06
deltaTime & fixedDeltaTime  (0) 2023.04.05
OnCollision & OnTrigger  (0) 2023.04.05
VR / VR 360 Player  (0) 2023.01.10