Examine as hierarquias de volume delimitadoras (BVH). Eles são mais comumente usados na detecção de colisões para reduzir o número de verificações necessárias ao calcular colisões ou na renderização para realizar o descarte de objetos em objetos. Como você já está usando esferas, sugiro uma árvore de esferas, embora outros volumes, como os AABBs, possam ser mais eficientes. Não sei ao certo que tipo de suporte o Unity tem para coisas como nunca o usei, mas provavelmente já há algo para isso na detecção de colisões ou na renderização de partes do mecanismo.
Basicamente, você gostaria de agrupar inimigos que estão próximos um do outro em várias esferas parentais. Quando uma unidade é movida, você confere sua esfera de disparo contra a esfera pai em vez de verificar cada inimigo. Se a esfera do gatilho se cruzar com a esfera pai, você verificaria cada inimigo dentro. Caso contrário, você pode descartar todos os inimigos que estiverem nele. Você deseja configurar vários níveis de esferas com base no tamanho máximo da esfera ou na contagem de inimigos para cada esfera e executar a verificação com base em uma esfera de nível superior. Então é só uma questão de descer a árvore para verificar cada inimigo sem precisar executar a verificação de distância de cada um.
Etapas necessárias para cada quadro:
- Mover inimigos
- Reconstruir / atualizar o BVH para novas posições inimigas
- Mova as unidades e verifique a árvore de esfera.
Isso pode reduzir as verificações necessárias quando há muitos inimigos, mas a sobrecarga de atualização e armazenamento da árvore pode não valer a pena quando não há muitas. Eu não estou familiarizado com o Comandante Supremo para saber o que você está procurando, então estou apenas assumindo 'centenas'. Você precisará criar um perfil em diferentes situações para descobrir se a sobrecarga valerá a pena para você.