Как сделать ИИ?
1. Разработать алгоритм "на бумаге", без кода, словами
2. Перевести алгоритм в что то близкое к коду. Условно - блоксхемы
3. Реализовать алгоритм на сишарпе.
4. Продебажить, убедится что реализация работает согласно п1.
Два прямых подхода
- описать кодом все возможные ситуации и реакцию ИИ на каждую, например
1. делить карту на зоны (комнаты) в пределах которых ИИ включает режим атаки, а вне которых - режим поиска,
2. поиск - это поиск пути (шаг - комната) в лабиринте от исходной точки до цели (если целей несколько, считать путь до каждой), для оптимизации каждый NPC хранит путь в памяти и пока он сам и целевая точка находятся на найденом пути, не вызывать его повторный поиск (там должен быть алгоритм - обновления пути, так как изменения обычно - шаг в сторону от текущего)
2. режим атаки - в твоем методе, это размещение всех NPC таким образом чтобы не было препятствий выстрелам, вот тебе почти тот же поиск пути, узлы могут быть препятствия и другие NPC (можно заложить в поиск точек у препятствий как ближайшая точка вокруг препятствия по периметру, при которой  перпендикуляр  от направления до цели не пересекает препятствие, т.е. NPC может за ним прятаться), для простоты препятствия либо - выпуклые многоугольники либо сразу треугольники. NPC становится припятствием, когда останавливается (можно в алгоритме считать не текущую точку а прогноз в момент когда NPC туда придет, для оптимизации по расстоянию), таким образом NPC сами выстроятся вокруг цели так как каждый следующий NPC будет вставать сбоку, правда в логике такой они будут друг за другом прятаться но это уже дальше можно логику вносить.
Очень часто вместо попытки расчитать места размещения NPC, заранее забить на карту waypoints, по которым будет двигаться ИИ, как частный случая - для каждой карты сначала вычисляются эти точки, а уже во время игры они постоянны.
...

- второй подход как ни странно проще и сложнее одновременно, ютуб роликами завален об обучении ИИ различными методами, например генетическим алгоритмом, ты строишь простую модель игры, и заставляешь свой ИИ, работающий на основе нейронки (на вход информация об окружении, например препятствия и NPC+цель) играть с самим собой огромное количество раз, и через миллионы итераций можно получить вполне здравый ИИ