NPC별로 충돌 처리를 다르게 해야 해서 어떻게 스크립트를 짜야 할지 고민에서 시작되었다. 그래서 유니티에서 충돌처리할 때 레이어와 태그 중 하나를 사용하는데, 해당 부분에 대해 내용을 조금 정리해보고자 한다.
1. 태그와 레이어를 동시에 사용하지 않는 이유
2. 해결 방안
3. 결론
1. 태그와 레이어를 동시에 사용하지 않는 이유
태그와 레이어를 동시에 사용하지 않는 이유는 아래와 같다.
* 중복 관리, 유지보수 어려움
= 각 오브젝트의 레이어와 태그를 일관되게 관리해야 하는데, 이는 코드와 프로젝트 구조의 복잡도를 높이고 오브젝트 상태 추적을 어렵게 만든다.
* 충돌 매트릭스 관리의 복잡성
= 레이어 기반 충돌 매트릭스 설정에서 각 레이어 간 충돌을 허용할지 여부를 설정가능하다. 그러나 태그 기반으로 추가적인 충돌 처리를 넣으면 충돌 매트릭스 설정과 코드 태그 검사를 동시에 진행해 복잡성이 증가한다.
* 성능 문제
= 많은 수의 오브젝트가 존재할 경우, 성능에 부담을 준다.
* 코드 가독성과 유지보수성 저하
= 태그와 레이어를 동시에 검사하면 코드의 가독성이 떨어지고 유지보수가 어려워진다.
2. 해결 방안
1번의 문제를 해결하려면, 아래와 같은 접근 방식을 참고하면 좋다.
* 단일 기준 처리
= 레이어는 물리적 충돌 처리, 태그는 논리적 분류에 사용한다.
* 스크립트 기반 처리
(NPC별 다른 충돌 처리를 원할 경우, NPC별 별도의 스크립트를 부착하였다. )
3. 결론
상황에 맞게 충돌 처리할 요소를 잘 선정해야 한다. 물리적 충돌 처리를 위해서는 레이어, 논리적 처리를 위해서는 태그를 이용한다.