[Unity] RayCast, 도대체 왜 검사가 안될까?

a-a·2025년 3월 24일

알쓸신잡

목록 보기
19/28

오늘의 기열찐빠 행동 기록하기..

Layer도 잘 설정해줬고, Ray를 쏘는 방향도 Debug.DrawRay를 활용해서 확인했다.
어떤 객체는 잘 검사가 되는데, 왜 내가 원하는 객체는 검사가 되지 않는 걸까?

왜!!!!!!


답은 바로바로

1. 좌표 확인하기!

Debug.DrawRay(transform.position, transform.forward, Color.red); <- 여기가 문제!
Ray ray = new(transform.position, transform.forward);
RaycastHit[] hits =  Physics.RaycastAll(ray, Mathf.Infinity);
string test = "";
foreach (var hit in hits)
    test += hit.collider.gameObject.name + " ";
Debug.Log(test);

Ray를 쏘는 대상의 y값은 0이었다.
하지만, Scene에서 보면 건물이 저렇게 떠 있는 것이 아니겠는가ㅠ?
그럼 당연히 검사를 해도 없다고 판별할 것이다.

y 값을 조정한 뒤로는 잘 검사한다.


2. NavMesh, Collider 크기

NavMesh의 크기보다 Collider의 크기가 작으면 검사가 잘 안된다는 블로그를 봤는데, 필자는 해당되지 않았다.
한번, 테스트 해보자!


임의대로 NavMeshObstacle의 Box 크기를 키웠다.

흠, 잘 되는 것 같다..


3. 마무리

Collider와 좌표만 잘 맞다면 잘 작동을 할 것이다.
아마 [2]번 내용은 박스 크기를 키우면서 좌표 인정 범위가 늘어나면서 잘 작동하는 것처럼 보였던 것이 아닐까 싶다.(정확한 것은 아니지만..)

profile
게임 개발자

0개의 댓글