해결된 질문
작성
·
478
답변 4
1
아 그렇군요.
<레이어가 배열로 개체 주소를 갖고 있는> 형태는 아니고,
거꾸로 <개체마다 자신의 Layer 리스트를 bitFlag로 들고 있는 형태>입니다.
따라서 Raycast할 때 우리가 원하는 layer 목록을 bitFlag로 넘겨주면,
Unity 엔진에서 일단 주변 오브젝트 후보군들을 추려서
지정된 레이어가 아닌 애들은 충돌 테스트를 아예 하지도 않고,
바로 쿨하게 Skip하게 됩니다.
0
0
충돌체크를 다하고 레이어단에 하겠다는게 아니라 레이어 구분해도 내부적으로 돌아가는게 그렇게 돌아가는 것이 아닌가 해서 질문드린건데
레이어가 따로 배열 같은걸로 개체 주소 가지고 있으면서 충돌을 배열만 도는 형태인건가요?
0
안녕하세요,
레이어를 사용하는 가장 큰 목적은 성능입니다.
[충돌 체크를 일단 다 하고 컨텐츠 단에서 레이어로 구분]하면 어떨까 의문을 주셨는데
사실 이 충돌 체크를 다 하는 부분이 매우 부하가 심할 수 있습니다.
그나마 실린더나 구형 모양의 collider는 양호한 편이지만,
mesh collider의 경우 충돌 자체를 계산하는데 많은 연산이 필요합니다.
게다가 raycast할 때 가장 먼저 앞에서 충돌한 collider를 뽑아오는 경우가 많은데,
layer로 구분을 해놓지 않으면 현재 raycast에서 충돌하고 싶지 않은 엉뚱한 애가 걸릴 수 있습니다.
감사합니다.