Examine las jerarquías de volumen delimitador (BVH). Se utilizan con mayor frecuencia en la detección de colisiones para reducir la cantidad de comprobaciones necesarias al calcular colisiones o en la renderización para realizar sacrificios de objetos en objetos. Como ya está usando esferas, sugeriría un árbol de esferas, aunque otros volúmenes como AABB pueden ser más eficientes. No estoy seguro de qué tipo de soporte tiene Unity para cosas como nunca lo he usado, pero probablemente ya haya algo para esto dentro de la detección de colisiones o las partes del motor.
Básicamente, querrás agrupar a los enemigos que están cerca uno del otro en múltiples esferas principales. Cuando se mueve una unidad, verificaría su esfera de disparo contra la esfera principal en lugar de verificar a cada enemigo. Si la esfera de activación se cruza con la esfera principal, verificaría a cada enemigo dentro. Si no es así, puedes descartar a todos los enemigos que están dentro de él. Debería configurar varios niveles de esferas en función del tamaño máximo de la esfera o el recuento de enemigos para cada esfera y realizar la verificación desde una esfera de nivel superior. Entonces es solo cuestión de caminar por el árbol para controlar a cada enemigo sin necesidad de realizar la verificación de distancia para cada uno.
Pasos necesarios para cada cuadro:
- Mover enemigos
- Reconstruir / actualizar el BVH para nuevas posiciones enemigas
- Mueve las unidades y verifica contra el árbol de la esfera.
Esto puede reducir los controles necesarios cuando hay muchos enemigos, pero la sobrecarga de actualizar y almacenar el árbol puede no valer la pena cuando no hay tantos. No estoy familiarizado con el Comandante Supremo para saber lo que buscas, así que solo estoy asumiendo 'cientos'. Deberá realizar un perfil en diferentes situaciones para averiguar si la sobrecarga le valdrá la pena.