Здравствуйте. Делал способность, которая, по идеи, должна запускать снаряд в цель способности и также в ближайшего к цели способности юнита. Я думал как это реализовать и в голове пришла идея, что нужно создавать отряд, в который мы добавляем только того юнита у которого самое минимальное расстояние до цели способности, но реализовать эту идею я не смог. Может кто знает как такое реализовать?

Опеределить расстояние между всеми юнитами вокруг цели способности, сортировать данные о расстоянии всех юнитов вокруг цели способности по возрастанию и первый элемент сортировки будет минимальным расстоянием. сылка на триггер сортировки, который я нашел
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
перебирать все точки, и запоминать ту которая меньше другой
например находил ближайшую я так
private void FG(){
        if DBU(GetEnumUnit(), Alien) < Distance {
            ChosenOne = GetEnumUnit()
            Distance = DBU(ChosenOne, Alien)
        }
    }
    
    private void InjuredInvoke(unit u){
        group g = CG
        unit egg
            GroupEnumUnitsInRect(g, bj_mapInitialPlayableArea, Filter(function EggFind))
                if CountGroup(g) > 1 {
                    Distance = 9999999.
                    Alien = u
                    ForGroup(g, function FG)
                    egg = ChosenOne
                    IssuePointOrderById(u, order_move, Gx(egg), Gy(egg))
                }
        GC(g)
        DG(g)
        g = null
        egg = null
    }

9
Ты в школе геометрию учил? Есть формула, чтобы определить расстояние между точками(√(xb - xa)² + (yb - ya)²), а также функция в гуи, для определения расстояния между точками.
Ответы (6)
23
IzobretatelBoom, Тут не в геометрии дело, нужно минимальное, как логику расписать, чтоб работало.
Qulore, тут понадобится переменная, куда будет записываться минимум. С изначальным большим значением, например 1000
А дальше - перебор по группе, с условием, что если расстояние между перебираемым юнитом и кастером меньше переменной, то Записать расстояние в переменную. После перебора получишь минимум. Можно ещё добавить переменную для записывания расстояния при переборе, для оптимизации.
И если нужно функционал для нескольких игроков (МУИ), тогда вместо переменной лучше расстояние заносить в хэш по ключу ид хэндла кастера
30
Тут не в геометрии дело, нужно минимальное
Сравнить два расстояния релизия не позволяет?
23
nazarpunk, здесь надо больше 2х, юнитов то много.
Да и зачем возиться со сравнениями 2х, если можно сразу написать алгоритм сортировки?
23
если расстояние между перебираемым юнитом и кастером меньше переменной
Я писал про это
30
Как определить минимальное расстояние
Взять два расстояния и отбросить наибольшее.
9
Опеределить расстояние между всеми юнитами вокруг цели способности, сортировать данные о расстоянии всех юнитов вокруг цели способности по возрастанию и первый элемент сортировки будет минимальным расстоянием. сылка на триггер сортировки, который я нашел
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.