Недавно делал скил, нашел на основе другого скила на GUI как вращать юнита по кругу, и все получилось, но теперь хочу сделать скил типа торнадо в определенном радиусе могло бы вращать юнитов вокруг себя
вот что получилось, но юниты стали перемещаться в рандомных точках в области
видимо это работает только на определенного юнита
как тогда быть?(Желательно на GUI)

На примере одного юнита такой принцип:
Вращение будет одновременно по орбите и вокруг своей оси.
  • Первый триггер будет срабатывать по использованию способности, он будет давать цели классификацию Страж, назначать реальной переменной для измерения времени значение 0.00, заносить в переменные цель и позицию цели, запускать таймер на 0.03 секунды;
  • У второго триггера событие на истечение таймера. Первым действием идёт проверка, Если реальная переменная больше или равна длительности торнадо, То выключить триггер и убрать у цели классификацию Страж, Иначе прибавить к реальной переменной 0.03, запустить заново таймер на 0.03 секунды, переместить мгновенно юнита от его позиции в переменной, например, на смещение 128.00 и ((реальная переменная)х20), повернуть юнита на угол поворота ((реальная переменная)х50) за 0.03 секунды.
Как это реализовать сразу на нескольких юнитов, наверняка, догадаешься.

Ой, у тебя же вопрос, как сделать торнадо сразу на нескольких)
Тут есть несколько вариантов, но раз у тебя используются массивы, то объясню на них.
Как понимаю, у тебя выделяются юниты в радиусе 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 мб. Иными словами по отдельности потери так незначительны, что даже не верится, лишь большими объёмами таких утечных триггеров получится перегруз памяти произвести.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
32
Эмм, чем стандартный торнадо не устраивает? И если чо это не вращение Юнита, а аттач эффекта к модели торнадо.
26
С подсчётом утечек от точек ошибку допустил, ведь надо было ещё на 30 умножить. 30х196.384=5891.52 kb=5.753 mb, а это уже довольно много, хоть всё ещё и не представляет критичной опасности, если так не будут утекать все триггеры.
13
quq_CCCP:
Эмм, чем стандартный торнадо не устраивает? И если чо это не вращение Юнита, а аттач эффекта к модели торнадо.
там юнит вращается вокруг себя если я не ошибаюсь, а нужно что бы группа юнитов вращалась вокруг оси торнадо
26
Так мне казалось, что тебе нескольких юнитов нужно вокруг разных точек вращать.
Короче, вот так надо:
Запамятовал опять, что классификация Страж триггерно не даётся.
Только лучше было бы пешим воинам менять высоту и поднять в воздух, дав и забрав способность Превращения в Сфинкса.
Загруженные файлы
13
8gabriel8:
Так мне казалось, что тебе нескольких юнитов нужно вокруг разных точек вращать.
Короче, вот так надо:
Запамятовал опять, что классификация Страж триггерно не даётся.
Только лучше было бы пешим воинам менять высоту и поднять в воздух, дав и забрав способность Превращения в Сфинкса.
Во, это я и хотел узнать, довольно сложная формула спасибо)
Да к стати я так тоже не нашел как страж выдавать
А как сделать что бы юниты могли выйти из под действия торнадо? через баф?
26
Чтобы вывести юнита из под Торнадо, нужно включить ему collision и его переменную u[?] приравнять к u[0].
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.