Как наносить урон по линии?
Может есть у кого написанная функция? Поделитесь, если не жалко :c

Drulia_san:
Чтобы одновременно это очень просто, выбери толщину линии, подели на два и с таким радиусом наноси аое урон со смещениями вперед от героя в нужном напоавлении на +100, потом +200 и тд, в цикле
Само собой всех дамагнутых добавляй в группу, чтоб сверяться с нейи не даиажить дважды, ткк и будет мгновенный урон по линии
Четко, только не +100 +200, а + радиус в котором юниты будут получать урон
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
9
Drulia_san:
Чтобы одновременно это очень просто, выбери толщину линии, подели на два и с таким радиусом наноси аое урон со смещениями вперед от героя в нужном напоавлении на +100, потом +200 и тд, в цикле
Само собой всех дамагнутых добавляй в группу, чтоб сверяться с нейи не даиажить дважды, ткк и будет мгновенный урон по линии
Четко, только не +100 +200, а + радиус в котором юниты будут получать урон
Принятый ответ
15
noyl:
Drulia_san:
Чтобы одновременно это очень просто, выбери толщину линии, подели на два и с таким радиусом наноси аое урон со смещениями вперед от героя в нужном напоавлении на +100, потом +200 и тд, в цикле
Само собой всех дамагнутых добавляй в группу, чтоб сверяться с нейи не даиажить дважды, ткк и будет мгновенный урон по линии
Четко, только не +100 +200, а + радиус в котором юниты будут получать урон
Нет. посмотри на картинку. Слева смещение кругов по радиусу по которому юниты получают урон, а справа на малую величину, где полоса урона приобретает более толстую однообразную форму. Как видишь если с малым интервалом так наносить урон - оно будет бить не всех юнитов, те что между окружностями слева просто не попадают под раздачу. Делай так как говорил 8gabriel8, записывай всех в группу и в конце наноси урон. Способ самый простой, не требующий математический возни. Чем меньше интервал между кругами (не важно какой там радиус), тем точнее линия урона.
Загруженные файлы
26
Когда делал по такому принципу способность, сталкивался с тем, что эти тоже не входят, типа радиус цепляет за середину юнитов. Хотя вроде как должен учитываться физический размер.
Короче, следует проверять.
Загруженные файлы
30
Хотя вроде как должен учитываться физический размер.
При GroupEnumUnitsInRange не учитывается физический размер, поэтому нужно при наборе в группу добавлять к радиусу максимальный физ.размер, а уже при переборе проверять функцией IsUnitInRangeXY.

Или вообще выбирать всех юнитов и радиусе урона и считать перпендикуляр от прямой.
function Perpendicular takes real Xa,real Ya,real Xb,real Yb,real Xc,real Yc returns real
    return SquareRoot((Xa - Xc) * (Xa - Xc) + (Ya - Yc) * (Ya - Yc)) * Sin(Atan2(Yc-Ya,Xc-Xa) - Atan2(Yb-Ya,Xb-Xa))
endfunction
27
NazarPunk, что возвращает Perpendicular? Вроде же длину перпендикуляра. верно? И как это работать должно в данном заклинании. Че-то никак не могу понять. Если я выберу всех юнитов, то какое условие надо задать в фильтре
26
NazarPunk:
При GroupEnumUnitsInRange не учитывается физический размер, поэтому нужно при наборе в группу добавлять к радиусу максимальный физ.размер, а уже при переборе проверять функцией IsUnitInRangeXY.
Ну вот и прояснилось.
Steal nerves:
И как это работать должно в данном заклинании
Максимальный физ. размер вроде у рыцаря, а минимальный у рабочего. Вроде от 8 до 32 они (или же от 16 до 24). Если перпендикуляр от прямой до юнита больше 32, то он урона не получает. А при меньшем расстоянии возможны разные варианты, но точно получит, если меньше 8.
30
что возвращает Perpendicular?
Формула возвращает длинну от бесконечной прямой линии, которая проходит через [Xa,Ya] [Xb,Yb]. Тобишь нужно ещё сделать проверку на то, что цель находится перед кастером.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.