Добавлен KaneThaumaturge
Если использовать способность, к примеру thunderclap, с областью воздействия 250 AoE, а затем выбрать юнитов таким способом:
call GroupEnumUnitsInRangeOfLoc(udg_BuferGroup, udg_BuferPoint,250, null)
(BuferPoint* - точка кастующего), то области будут разные, удар грома будет воздействовать на большую область, чем в коде. Почему?
UPD:
Пример на картинке:
Пример на картинке:
На картинке я вырезал триггерно область из послушников (250 AoE), и нацелил способность (250 AoE) в эту же точку, как видно, способность захватывает еще некоторых юнитов.
Принятый ответ
Это из-за физического размера выбираемых воинов.
Если хотите сделать способность, которая будет работать также, как и стандартные, то при выборе воинов в качестве радиуса указываете нужный радиус + максимально возможный физический размер воинов на карте.
Если хотите сделать способность, которая будет работать также, как и стандартные, то при выборе воинов в качестве радиуса указываете нужный радиус + максимально возможный физический размер воинов на карте.
// Если перебор воинов идёт через цикл:
call GroupEnumUnitsInRange( group, x, y, SPELL_RADIUS + MAX_COLLIZION_SIZE, boolexpr )
loop
// ...
set enumUnit = FirstOfGroup( group )
// ...
if IsUnitEnemy( enumUnit, player ) and IsUnitInRangeXY( enumUnit, x, y, SPELL_RADIUS ) then
call DoSomething( )
endif
// ...
endloop
Как показано выше, с помощью функции IsUnitInRange( ) мы можем отсеять воинов, которые не попали в радиус действия способности, но были выбраны в группу из-за того, что мы указали в функции GroupEnumUnitsInRange( ) радиус чуть больше нужного нам.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Bergi_Bear, Выбор все же идёт по окружности:
например, у меня здания 144 коллижн имеют, поэтому если я хочу их учесть, добавляю 150 к аое. если только по юнитам, то 25 обычно добавляем, шире нет.
собираю и каждому проверяю IsUnitInRangeXY(u,x,y) < RealAoe
Если хотите сделать способность, которая будет работать также, как и стандартные, то при выборе воинов в качестве радиуса указываете нужный радиус + максимально возможный физический размер воинов на карте.