Недавно делал скил, нашел на основе другого скила на GUI как вращать юнита по кругу, и все получилось, но теперь хочу сделать скил типа торнадо в определенном радиусе могло бы вращать юнитов вокруг себя
вот что получилось, но юниты стали перемещаться в рандомных точках в области
видимо это работает только на определенного юнита
как тогда быть?(Желательно на GUI)
вот что получилось, но юниты стали перемещаться в рандомных точках в области
видимо это работает только на определенного юнита
как тогда быть?(Желательно на GUI)
Принятый ответ
На примере одного юнита такой принцип:
Вращение будет одновременно по орбите и вокруг своей оси.
Вращение будет одновременно по орбите и вокруг своей оси.
- Первый триггер будет срабатывать по использованию способности, он будет давать цели классификацию Страж, назначать реальной переменной для измерения времени значение 0.00, заносить в переменные цель и позицию цели, запускать таймер на 0.03 секунды;
- У второго триггера событие на истечение таймера. Первым действием идёт проверка, Если реальная переменная больше или равна длительности торнадо, То выключить триггер и убрать у цели классификацию Страж, Иначе прибавить к реальной переменной 0.03, запустить заново таймер на 0.03 секунды, переместить мгновенно юнита от его позиции в переменной, например, на смещение 128.00 и ((реальная переменная)х20), повернуть юнита на угол поворота ((реальная переменная)х50) за 0.03 секунды.
Ой, у тебя же вопрос, как сделать торнадо сразу на нескольких)
Тут есть несколько вариантов, но раз у тебя используются массивы, то объясню на них.
Как понимаю, у тебя выделяются юниты в радиусе 800, на них действует способность, а на новых юнитов, которые заходят в область, торнадо не распространяется. Тем проще, переменные реальная, юнит и позиция должны быть массивами, таймер нет, ещё понадобится ввести переменные группы и целочисленную.
Поправка, реальную переменную для измерения времени не надо делать массивом, нужно создать массив реальных переменных, которые будут делать торнадо у юнитов чуть разными по скорости.
Тут есть несколько вариантов, но раз у тебя используются массивы, то объясню на них.
Как понимаю, у тебя выделяются юниты в радиусе 800, на них действует способность, а на новых юнитов, которые заходят в область, торнадо не распространяется. Тем проще, переменные реальная, юнит и позиция должны быть массивами, таймер нет, ещё понадобится ввести переменные группы и целочисленную.
Поправка, реальную переменную для измерения времени не надо делать массивом, нужно создать массив реальных переменных, которые будут делать торнадо у юнитов чуть разными по скорости.
- Первый триггер будет срабатывать по использованию способности, он будет назначать реальной переменной для измерения времени значение 0.00, запускать таймер на 0.03 секунды, назначать переменную группы из живых вражеских юнитов, не являющимися зданиями в радиусе 800 от цели использования способности. Целочисленной переменной будет назначаться количество юнитов в группе, потом в группе все юниты выбираются и идут действия: дать выбранному классификацию Страж, назначать реальной переменной[целочисленная] для разной скорости торнадо случайное значение от 0.90 до 1.10, заносить в переменные цель[целочисленная] и позицию цели[целочисленная], задавать значение целочисленной на 1 меньше, после действий в группе опять целочисленной задать количество юнитов в группе;
- У второго триггера событие на истечение таймера. Первым действием идёт проверка, Если реальная переменная больше или равна длительности торнадо, То выбрать группу и убрать у выбранных классификацию Страж, Иначе прибавить к реальной переменной 0.03, запустить заново таймер на 0.03 секунды, по циклу от 1 до целочисленной провести действия: переместить мгновенно выбранного от его позиции[целочисленная] на смещение (реальная[целочисленная]х128.00) и ((реальная[целочисленная]х(реальная переменная)х20), повернуть юнита на угол поворота ((реальная[целочисленная]х(реальная переменная)х50) за 0.03 секунды.
Интересно стало, как много памяти может утечь от этого триггера. За средние значения принимаю, что способность воздействует 2 секунды на 8 юнитов и используется за игру 30 раз. Вес утечек:
// Location: 0.361 kb
// Group: 0.62 kb + 0.040 kb for each unit in the group.
// Effect: 11.631 kb
Группа: 30(0.62 + 8х0.04)=28.2 kb
Вряд ли эффекты будут созданы и не удалены, но на всякий случай посчитаю их.
Эффекты: 30х8х11.631=2791.44 kb=2.726 mb
Так как торнадо длится 2 секунды, то это 67 тиков таймера на 0.03 секунды.
Точки: 0.361х(1+67)х8=196.384 kb
Даже если время действия увеличить до 10 секунд, то это большой роли не сыграет, общий вес утечек от этого страшного триггера к концу игры будет не более 4 мб, если не удалять спецэффекты, а если утекать будут лишь группы с точками, то не более 1 мб. Иными словами по отдельности потери так незначительны, что даже не верится, лишь большими объёмами таких утечных триггеров получится перегруз памяти произвести.
Вряд ли эффекты будут созданы и не удалены, но на всякий случай посчитаю их.
Эффекты: 30х8х11.631=2791.44 kb=2.726 mb
Так как торнадо длится 2 секунды, то это 67 тиков таймера на 0.03 секунды.
Точки: 0.361х(1+67)х8=196.384 kb
Даже если время действия увеличить до 10 секунд, то это большой роли не сыграет, общий вес утечек от этого страшного триггера к концу игры будет не более 4 мб, если не удалять спецэффекты, а если утекать будут лишь группы с точками, то не более 1 мб. Иными словами по отдельности потери так незначительны, что даже не верится, лишь большими объёмами таких утечных триггеров получится перегруз памяти произвести.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Короче, вот так надо:
Да к стати я так тоже не нашел как страж выдавать
А как сделать что бы юниты могли выйти из под действия торнадо? через баф?