복합 콜라이더는 동일한 리지드바디 게임 오브젝트에 있는 콜라이더의 모음입니다.
복합 콜라이더는 전체적으로 하나의 리지드바디 콜라이더처럼 작동합니다. 복합 콜라이더는 오목한 셰이프에 정확하게 맞는 콜라이더가 필요하거나 메시 콜라이더로 시뮬레이션하기에는 너무 많은 계산을 요구하는 모델이 있을 때 유용합니다.
복합 콜라이더는 다음 요소로 구성됩니다.
복합 콜라이더에는 리지드바디가 하나만 있어야 하며, 이는 루트 게임 오브젝트에 있어야 합니다.
복합 콜라이더를 만드는 자세한 지침은 복합 콜라이더 생성을 참조하십시오.
위 그림의 Gun Model 게임 오브젝트에서는 부모 게임 오브젝트에 리지드바디가 연결되어 있고, 각각 기본 콜라이더가 있는 여러 자식 게임 오브젝트가 있습니다. 물리 힘으로 부모 리지드바디를 움직이면 자식 콜라이더도 함께 움직입니다. 기본 콜라이더는 환경의 다른 콜라이더와 충돌할 수 있으며, 부모 리지드바디는 이러한 충돌에 따라 이동 방식을 변경합니다.
이 설정은 리지드바디와 여러 콜라이더를 포함하는 단일 게임 오브젝트보다 더 많은 유연성을 제공합니다. 각 콜라이더가 다른 게임 오브젝트에 있는 경우 각 콜라이더의 트랜스폼을 개별적으로 수정할 수 있습니다. 하지만 콜라이더의 위치를 변경할 때는 리지드바디의 동작을 모니터링해야 합니다. 콜라이더의 위치와 스케일을 변경하면 리지드바디의 질량 중심이 변경될 수 있으며, 런타임 시 여러 프레임에 걸쳐 지속적인 변경이 이루어지면 예기치 않은 동작이 발생할 수 있습니다. 이 경우 rigidbody.centerOfMass
를 사용하여 질량 중심을 수동으로 설정할 수 있습니다.
동일한 리지드바디에 여러 콜라이더를 연결하면 물리 시스템은 전체를 하나의 리지드바디 콜라이더로 취급합니다. 콜라이더 타입은 리지드바디 설정에 따라 동적 또는 키네마틱으로 정의됩니다.
복합 콜라이더가 다른 콜라이더와 접촉하면 Unity는 복합 콜라이더의 각 개별 콜라이더별로 충돌을 등록합니다. 따라서 런타임 시 원하는 충돌 페어만 얻을 수 있도록 콜라이더를 정렬하거나, 콜라이더 레이블을 사용하여 특정 콜라이더로 인해 발생하는 동작을 확인해야 합니다.
대부분의 경우 복합 콜라이더는 메시 콜라이더와 유사한 솔루션을 제공하며, 주요 목적은 복잡한 셰이프를 가진 항목에 정확한 충돌을 제공하는 것입니다. 복합 콜라이더의 장점과 한계점을 고려할 때는 일반적으로 메시 콜라이더와 비교하는 경우가 많습니다.
복합 콜라이더의 주요 이점은 다음과 같습니다. * 복잡한 오목 셰이프에 대한 충돌을 얻을 수 있습니다. 메시 콜라이더는 더 정확하지만, 오목한 셰이프에 대해 정확한 충돌을 지원하지는 않습니다. * 일부 경우에는 복합 콜라이더가 메시 콜라이더보다 적은 계산을 요구할 수 있습니다. 많은 경우 몇 개의 콜라이더만으로도 대략적으로 만들 수 있는 셰이프나 너무 정확하지 않아도 되는 셰이프가 이에 해당합니다. 예를 들어 메시 콜라이더는 복잡한 셰이프를 정확하게 맞추기 위해 수백 개의 폴리곤을 생성할 수 있지만, 기본 콜라이더를 사용한 대략적인 셰이프는 훨씬 적은 폴리곤을 필요로 할 수 있습니다.
그러나 복합 콜라이더에도 몇 가지 중요한 한계점이 있습니다. * 복합 콜라이더는 정확도가 떨어집니다. 대부분의 경우 더 단순한 셰이프로 복합 콜라이더를 만들면 항목의 셰이프에 근접하게 만들 수는 있지만 완벽하게 일치하지는 않습니다. * 복합 콜라이더는 생성 시간이 더 오래 걸립니다. 복합 콜라이더를 사용하면 각 콜라이더를 수동으로 정렬해야 하므로 시간이 더 오래 걸립니다. * 일부 경우에는 복합 콜라이더가 메시 콜라이더보다 많은 계산을 요구할 수 있습니다. 많은 수의 콜라이더를 사용하여 대략적인 셰이프를 만들어야 하는 매우 복잡한 셰이프가 이에 해당하는 경우가 많습니다. 메시 콜라이더 하나가 여러 개의 기본 콜라이더보다 더 효율적일 수 있습니다.
프로젝트에 따라 적절한 옵션이 항상 달라질 수 있으므로, 각 설정을 테스트하고 물리 프로파일러를 사용하여 콜라이더 설정의 효율성을 파악해야 합니다.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.