WarCraft 3: Как сделать чтобы монстры шли по определенному пути.

База примеров на GUI
Триггер вроде бы и простой но иногда ставящий людей в ступор. Пример основывается на создании области при попадании в которую крип перенаправляется в ту или иную сторону. Уверен вы уже создали область в которой появляются крипы
скажем "Область1"

Крипы идут из области в область

Пример А. Крипы нападают на все что попадется им на пути

Теперь создадим еще 1 область, при попадании в которую крипы будут перенаправляться в центр карты.:
скажем "Область2"
И поставим что крипы появившиеся в "Область1" идут в "Область2" и поворачивают в центр карты.

> ??Событие:??
> -Боевая единица - A unit enters "область1"
> ??Условие:??
> ??Действие:??
> -Боевая единица - Order (Triggering unit) to перейти, нападая на противников (Center of "Область2")


> ??Событие:??
> -Боевая единица - A unit enters "Область2"
> ??Условие:??
> ??Действие:??
> -Боевая единица - Order (Triggering unit) to перейти, нападая на противников (Center of (Playable map area))

!!Если за место "перейти, нападая на противников" поставить "Двигаться" то монстры будут идти к месту приказа не отвлекаясь.

Пример Б. Монстры идут из А в Б через определенное время

(периодический приказ)

> ??Событие:??
> -Время - Every 10.00 seconds of game time
> ??Условие:??
> ??Действие:??
> -Боевая единица - Order (Triggering unit) to Двигаться (Center of (Playable map area))

Подведем итог

  1. Если использовать переодический приказ, юниты начинут "тупить", чтобы этого небыло требуется добавлять их в переменную типа "Отряд" и управляйть уже ими через переменную.
  1. Очень важно в условии во всех примера это указать кому принадлежит юнит иначе триггер будет действовать безраздельно на всех юнитов
  1. Если во всех примера за место "перейти, нападая на противников" поставить "Двигаться" то юниты будут идти к месту приказа не отвлекаясь на когото, и обходить все припятсятвия.
  1. Не забываем что выше перечисленное это простые примеры, а при сложных это не только дойти из пункта "А" в пункт "Б". а например:
Из А в Г через Д в конечную точку Б
Из А по условии времени в точки Б или В в точку Д через Г
Из А в Б по условии Условия через точку Г в точку Д или конечная точка В
Как видите фантазия в ваших головах.

Просмотров: 5 630

Sergant1000 #2 - 4 года назад 0
ок спс
Тимур #3 - 4 года назад 0
Иногда они не доходят. Например, если юнита, идущего в область окружили враги так, что он не может двигаться, то он перебьёт их (если сможет) и остановится.
Sergant1000 #4 - 4 года назад 0
Тут я не знаю как поступить, только если не отдавать приказы тригером через опр время.
Zahanc #5 - 4 года назад 0
Лично я относительно изящно решил эту задачку с перемещением юнитов по маршруту с учётом того, что большое количество приказов может вызвать лаги и с учётом построения. Но алгоритм полностью на jass.
И да, опубликованый пример далёк от идеала. Как, скажем, провести юнита не из пункта А в пункт Б, а по маршруту из пунктов А, Б, В, Г, Д? В старой академии была карта-пример от Msey, но я не могу найти тему.
Sergant1000 #6 - 4 года назад (отредактировано ) 0
bladget, по маршруту из пунктов А, Б, В, Г, Д мой пример показывает как провести из А в В через Б(всеголишь сокрашенный вариант), а вариантов путей много можно сделать чтобы юнит шел:
Из А в Г через Д в конечную точку Б
Из А по условии времени в точки Б или В в точку Д через Г
Из А в Б по условии Условия через точку Г в точку Д или конечная точка В
Как видишь вариантов много, и еще при варианте когда юниты входят в область перенаправления то они получают индивидуальный приказ не действующий на всех юнитов что в свою очередь не создает таких лагов как в приказе отданом всем через определенно время.
Zahanc #7 - 4 года назад 0
Чтобы не было лагов при периодическом отдаче приказа нужно заносить юнитов в группы и проверять их текущий приказ, а делать триггер для каждой области для перенаправления очень утомительно + то, что сказал Тимур. Ещё можно ради экономии памяти отдавать приказ не одному юниту, а отряду, правда тогда юниты могут тормозить. Зато будут ходить стройными рядами!
Sergant1000 #8 - 4 года назад 0
В группы я так понимаю можно заносить математически в массивную переменную, скажем при 20 юнитах в "переменной 1" как тока она заполняется то юниты заносятся в "переменной 2" и так по очереди. А чтоб не рассуждать о Жизни, может все таки попробуем сделать пример???
Zahanc #9 - 4 года назад 0
Говорю же, есть примеры в старой академии, от Msey, но я не могу их найти, а мои алгоритмы на jass.
Нашёл пример о котором говорил.
Forceek #10 - 4 года назад 0
Как сделать чтобы шли в зону только те воины, которые только что появились, а не все, которые вошли в эту зону?! я че-то не нашел как указать какому игроку принадлежат эти войка. помогите пожалуйста.
Sergant1000 #11 - 4 года назад 0
для этого используют (Last created unit)
если тебе нужно чтобы конкретный тип юнита шел туда куда тебе надо, то это надо указывать это в условии.
OchenZloi #12 - 3 года назад 1
а как сделать так например чтобы враждебный юнит появился из области и атаковал ему враждебного