Raycast 기능을 탐구하고, 기본 개념의 이해를 바탕으로 활용 방법을 정리해보자.
Raycast는 Unity 물리 엔진에서 사용하는 기능으로,
하나의 점에서 특정 방향으로 쏜 ‘가상의 레이(광선)’가 무엇과 충돌하는지를 확인하는 방식이다.
코드 기본 구조를 보고 이해해보자.
Physics.Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, floaty maxDistance, int layerMask)

bool 타입으로 반환하는 메서드의 형태로 파라미터는 다음과 같다.
| 매개변수 | 설명 |
|---|---|
origin |
광선 시작 지점 |
direction |
광선 방향 (반드시 normalized 벡터 사용) |
hitInfo |
충돌 정보를 담는 구조체 (RaycastHit) |
maxDistance |
광선이 도달할 최대 거리 |
layerMask |
충돌 감지할 레이어 필터 (선택 사항) |
여기서 RaycastHit 구조체를 좀 더 살펴볼 필요가 있다.

이 구조체는 충돌한 대상에 대한 상세 정보를 감고 있으며
다음과 같은 속성을 지닌다.
| 속성 | 설명 |
|---|---|
collider |
충돌한 Collider |
point |
충돌 지점 (월드 좌표) |
normal |
충돌 표면의 법선 벡터 |
distance |
origin에서 충돌 지점까지 거리 |
rigidbody |
충돌한 객체의 Rigidbody |
transform |
충돌한 객체의 Transform |
if (Physics.Raycast(origin, direction, out RaycastHit hit, 100f))
{
// 예시: 정보 얻기
Collider targetCollider = hit.collider; // 충돌한 콜라이더
GameObject targetObject = hit.collider.gameObject; // 충돌한 게임오브젝트
Transform targetTransform = hit.transform; // Transform 직접 접근 가능
Rigidbody rb = hit.rigidbody; // Rigidbody 있으면 가져옴
Vector3 hitPoint = hit.point; // 충돌 위치
Vector3 normal = hit.normal; // 충돌 표면의 법선
float distance = hit.distance; // origin부터 충돌점까지 거리
}