Deff_Dev
[Unity/C#] RayCast가 벽 뚫는 버그 해결 본문
플레이어의 에임에서 레이를 쏴서 상호작용할 수 있는 오브젝트를 탐색하는데, 벽 뒤에 있는 오브젝트도 탐색이 되는 버그가 발생했다.
Physics.Raycast(ray, out RaycastHit hit, maxCheckDistance, layerMask)
기존의 코드는 에임에서 레이를 쏘고 layerMask에 일치하는 오브젝트를 hit에 저장한다.
문제
이 코드의 문제점은 간단했다.
layerMask만 탐색을 하다 보니 default로 설정된 벽을 건너뛰고 그 뒤에 있는 상호작용 오브젝트를 탐색하게 되는 것이었다.
해결
모든 레이어의 오브젝트를 탐색한 후, 레이어 비교를 통해 상호작용 오브젝트를 찾는 방법으로 수정했다.
if (Physics.Raycast(ray, out RaycastHit hit, maxCheckDistance)
&& GameManager.Instance.IsLayerMatched(layerMask.value, hit.collider.gameObject.layer))
※ IsLayerMathched 함수는 오브젝트의 레이어를 비교해주는 함수이다.
생각보다 쉽게 해당 문제를 해결했다.
'Unity(유니티) > 유니티 공부' 카테고리의 다른 글
[Unity/C#] 파이프라인, URP (2) | 2024.06.13 |
---|---|
[Unity/C#] Func (0) | 2024.06.12 |
[Unity/C#] 3D 문 상호작용 (0) | 2024.06.05 |
[Unity/C#] TextMeshPro Material (0) | 2024.05.30 |
[Unity/C#] 법선 벡터 (0) | 2024.05.29 |