본문으로 바로가기

[Unity] Raycast(레이캐스트)

category Game Development/Unity 2024. 9. 1. 03:59

레이 캐스트 (Raycast) - 눈에 보이지 않는 가상의 광선(Ray)을 한 점에서 특정 방향으로 쏘아서 해당 광선과 충돌한 물체가 무엇인지 감지하는 방법

[작동 방식]

1. 시작점(origin) 과 방향(direction), 최대거리(maxDistance), 충돌 검사할 레이어(layerMask), Trigger Collider와 상호작용 여부(queryTriggerInteraction) 를 설정한다.

Physics.Raycast(Vector3 origin, Vector3 direction, float maxDistance, int layerMask, QueryTriggerInteraction)

2. 충돌 검사

첫번째로 만나는 오브젝트 정보를 반환하며, 충돌이 발생한 위치, 충돌한 오브젝트의 정보(예: 이름, 태그) 등을 알 수 있다.

충돌시 True를 반환한다.

 

[사용 예시]

시야 확인: 적이나 플레이어가 일정 거리 안에서 무언가를 바라보고 있는지 확인할 때 사용한다. 예 ) 적이 플레이어를 발견했는지 여부

물체 상호작용: 유저가 마우스로 클릭한 지점에서 레이캐스트를 쏘아, 클릭한 오브젝트를 감지하고 그와 상호작용하는 기능

총알 및 투사체: 총알이 발사된 방향으로 레이캐스트를 쏴서, 어느 지점에 명중했는지 계산하고, 그에 따른 데미지를 적용

AI 경로 탐색: AI가 이동 중에 장애물과 충돌할 가능성이 있는지 미리 감지하고, 이를 회피하는 등의 로직 구현 가능

 

RaycastHit 구조체 : 레이캐스트의 결과를 담고 있는 데이터 구조체

충돌 정보는 RaycastHit 구조체를 통해 제공된다. 

충돌 위치 : hit.point

충돌 오브젝트 : hit.collider

충돌 표면의 법선 (표면의 방향) : hit.normal

충돌 지점까지 거리 : hit.distance

 

- 해당 객체가 하나 이상의 콜라이더 컴포넌트를 가지고 있으면 충돌처리가 가능하다.

 

- DrawRay(원점, 방향, 컬러, 지속시간)는 씬내에 레이를 그리는 함수이다

'Game Development > Unity' 카테고리의 다른 글

[Unity] Cinemachine  (1) 2024.09.03
[Unity] SendMessage  (1) 2024.09.01
[Unity] 스크립트 실행 순서 'Script Execution Order'  (0) 2024.08.25
[Unity] 터레인 (Terrain) 생성  (0) 2024.08.20
[Unity] Animator  (0) 2024.02.20