Unity입력과 물리

Raycast 기본

시선, 클릭, 거리 감지처럼 직선 방향 검사에 자주 쓰는 `Physics.Raycast` 기본 흐름을 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

csharp
if (Physics.Raycast(origin, direction, out RaycastHit hit, distance))
{
    Debug.Log(hit.collider.name);
}

설명

  • Raycast는 한 점에서 특정 방향으로 보이지 않는 선을 쏘아 무엇을 맞았는지 검사하는 기능입니다.
  • 총알 판정, 상호작용 대상 탐지, 마우스 클릭 대상 확인 같은 문제에서 자주 쓰입니다.
  • 결과는 RaycastHit에 담기며, 맞은 콜라이더, 지점, 노멀 등을 꺼낼 수 있습니다.
  • 거리 제한과 레이어 마스크를 함께 쓰면 불필요한 충돌 검사를 줄이기 쉽습니다.

짧은 예제

csharp
[SerializeField] private float interactDistance = 3f;

private void Update()
{
    if (Physics.Raycast(transform.position, transform.forward, out RaycastHit hit, interactDistance))
    {
        if (hit.collider.CompareTag("Interactable"))
        {
            Debug.Log($"target = {hit.collider.name}");
        }
    }
}

빠른 정리

항목설명
시작점선이 출발하는 위치
방향검사할 직선 방향
RaycastHit충돌 결과 정보
거리 제한검사 범위를 줄이는 방법
레이어 마스크특정 레이어만 선택적으로 검사

주의할 점

Raycast가 맞지 않는다고 해서 코드가 틀린 것은 아닐 수 있습니다. Collider 유무, Layer 설정, 방향 벡터, 최대 거리부터 차례로 확인하는 편이 좋습니다.

참고 링크

2 sources