기본 패턴
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