BVH (Bounding Volume Hierarchies)를 살펴보십시오. 충돌을 계산할 때 또는 객체에서 절두체 컬링을 수행하기 위해 렌더링 할 때 필요한 검사 수를 줄이기 위해 충돌 감지에 가장 일반적으로 사용됩니다. 이미 구체를 사용하고 있으므로 AABB와 같은 다른 볼륨이 더 효율적일 수 있지만 구체 트리를 제안합니다 . 내가 사용한 적이없는 것과 같은 Unity에 대해 어떤 종류의 지원이 있는지 확실하지 않지만 충돌 감지 또는 엔진의 렌더링 부분에는 이미이 기능이 있습니다.
기본적으로 서로 가까이있는 적을 여러 부모 구체로 그룹화하려고합니다. 유닛이 움직일 때, 각 적을 확인하는 대신, 모구에 대해 트리거 영역을 확인합니다. 방아쇠 구체가 부모 구체와 교차하면 내부의 각 적을 확인합니다. 그렇지 않다면 그 안에있는 모든 적을 버릴 수 있습니다. 각 구의 최대 구 크기 또는 적 수를 기준으로 여러 수준의 구를 설정하고 최상위 구를 기준으로 확인을 수행하려고합니다. 그런 다음, 각각의 거리 점검을 수행 할 필요없이 각각의 적을 점검하기 위해 나무를 걸어가는 것입니다.
각 프레임에 필요한 단계 :
- 적을 이동
- 새로운 적 위치에 대한 BVH 재건 / 업데이트
- 단위를 이동하고 구체 트리를 확인하십시오.
이것은 적들이 많을 때 필요한 수표를 줄일 수 있지만, 그 수가 많지 않으면 트리를 업데이트하고 저장하는 오버 헤드는 그만한 가치가 없을 수 있습니다. 나는 당신이 무엇을하는지 알기 위해 최고 사령관에 익숙하지 않습니다. 그래서 나는 단지 '수백'을 가정하고 있습니다. 오버 헤드가 가치가 있는지 여부를 알아 보려면 다양한 상황에서 프로파일 링해야합니다.