Spójrz na graniczne hierarchie woluminów (BVH). Są one najczęściej używane w wykrywaniu kolizji w celu zmniejszenia liczby kontroli potrzebnych podczas obliczania kolizji lub podczas renderowania w celu wykonania wygładzania elementów na obiektach. Ponieważ już używasz kul, sugerowałbym drzewo kuli, chociaż inne woluminy, takie jak AABB, mogą być bardziej wydajne. Nie jestem pewien, jakie wsparcie ma Unity dla takich rzeczy, jakich nigdy nie użyłem, ale prawdopodobnie jest coś w tym już w wykrywaniu kolizji lub renderowaniu części silnika.
Zasadniczo chciałbyś zgrupować wrogów, którzy są blisko siebie, w wielu sferach rodzicielskich. Gdy jednostka zostanie przeniesiona, sprawdzasz, czy jej sfera wyzwalająca jest skierowana na sferę macierzystą, zamiast sprawdzania każdego wroga. Jeśli kula wyzwalająca przecina się ze sferą macierzystą, sprawdziłbyś każdego wroga wewnątrz. Jeśli nie, możesz odrzucić wszystkich znajdujących się w nim wrogów. Chcesz ustawić wiele poziomów kul w oparciu o maksymalny rozmiar kuli lub liczbę wrogów dla każdej kuli i wykonać sprawdzenie na podstawie kuli najwyższego poziomu. Następnie chodzi tylko o zejście z drzewa, aby sprawdzić każdego wroga bez konieczności przeprowadzania kontroli odległości dla każdego z nich.
Wymagane kroki dla każdej ramki:
- Rusz wrogów
- Odbuduj / zaktualizuj BVH dla nowych pozycji wroga
- Poruszaj jednostkami i sprawdzaj na drzewie kuli.
Może to zmniejszyć liczbę koniecznych kontroli, gdy jest wielu wrogów, ale narzut związany z aktualizacją i przechowywaniem drzewa może nie być tego wart, gdy nie ma ich zbyt wielu. Nie znam Najwyższego Dowódcy, żeby wiedzieć, czego szukasz, więc zakładam, że „setki”. Musisz się profilować w różnych sytuacjach, aby dowiedzieć się, czy narzut będzie dla Ciebie tego wart.