레이 캐스트 (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 |