XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
1max_iron
Death Metal
offline
Опыт: 4,038
Активность:
Стремительный удар
Я хотел сделать спелл(называется стремительный удар)
Суть:блейд мастер,замирает в положении атака2,и с огромной скоростью (в замершем положении) проходит сквозь юнита и наносит ему урон.
Я столкнулся с двумя проблемами:
1-Как заствавить блейда двигаться быстро(именно двигаться,приблежаться а не телепортироваться)к цели!
2-Как заставить его замереть именно в позиции атака2?
Помогите!
Старый 15.06.2007, 19:45
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
1max_iron,2, set unit animation speed = 0.00
1, скорее всего, периодический триггер с перемещением (полярные координаты, как в карте Polar escape)
Старый 15.06.2007, 19:48
1max_iron
Death Metal
offline
Опыт: 4,038
Активность:
А поп подробнее можно?или пример?
Старый 15.06.2007, 19:51
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
я итак весь день примеры клепал, обойдешся :): действие со скоростью анимы в разделе Анимация в триггерах
а перемещение как в поляр эскейпе - забей в поиск
Старый 15.06.2007, 19:56
1max_iron
Death Metal
offline
Опыт: 4,038
Активность:
Кто может мне помочь???
ПС-Как сделать что бы вокруг юнита создались 4 юнита которые находились бы вокруг него в указанных позициях(слева,справа,спереди,сзади)?
Старый 15.06.2007, 21:20
TNT
О_о
offline
Опыт: 11,019
Активность:
ПС:
Создавай юнитов с помощью полярок. Указывайрасстояние, отнимай от Facing of(Нужный юнит) 270, 180 90 и 0, ставь это в градусы. Тогда должны юниты появиться перед лицом, сзади и по бокам нужного юнита, как бы он не повернулся.
Старый 15.06.2007, 21:31
1max_iron
Death Metal
offline
Опыт: 4,038
Активность:
а можно пример!Я вобще про полярки не слухом,не духом!
Старый 15.06.2007, 21:49
TNT
О_о
offline
Опыт: 11,019
Активность:
вот
Старый 15.06.2007, 21:58
Sailar

offline
Опыт: 8,555
Активность:
3 варианта либо зделать дамми и каждые 0.01сек муветь героя на него в то время как дамми будет бежать к цели заклинания - мак скор 520. Либо полярные коардинаты(можно зделать любую скорость) муве юнит( дистанция юнита от х и у) + твоё число
Либо самый красивый вариант дать юнитуа эфект астрал и муветь заспину цели будет слет как будто он пролетел с большой скоростью выгледит красиво
Старый 16.06.2007, 02:19
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
Все это не логично и много утечек.
  1. Быстро перемещать, без утечек мона так - (естественно я не описываю события при которых он действует, сам сделаешь. Под "событиями" имеется ввиду - когда запускается триггер движения, цель и пр.).
Каждые 0.01 сек
Custom script: local real Xcor комментарий: должно быть в начале триггера
Custom script: local real Ycor комментарий: должно быть в начале триггера
Custom script: set Xcor = (GetUnitX(udg_u)+(20*CosBJ(GetUnitFacing(udg_u))))
Custom script: set Ycor = (GetUnitY(udg_u)+(20*SinBJ(GetUnitFacing(udg_u))))
Custom script: call SetUnitX (udg_u,Xcor)
Custom script: call SetUnitY (udg_u,Ycor)
Custom script: set Xcor = 0
Custom script: set Ycor = 0
Примечание: вместо 20 - можно ставить любое число, регулирует скорость. для начала попробуй 20, если быстро, поставь меньше, если медленно, то больше.
udg_u - глобальная переменная юнит с именем u, в нее должен быть записан блейдмастер после каста заклинания, создается переменная в редакторе)
  1. set animation speed = 0.00, но перед использованием этой команды нужно сделать так чтобы блейд проиграл анимку Attack 2, здесь будут проблемы. Вот решение:
  1. Анимация - Add/Remove unit animation tag. Создаётся список анимаций на юните. Достаточно создать тег один раз, и можно проигрывать сколько угодно анимаций для этого юнита.
  1. Custom script: call SetUnitAnimationByIndex(udg_u,N) - для того чтобы проиграть нужную анимацию. Вместо N поставь 9.
После окончания спелла не забудь восстановиться юниту анимацию и поставь ее скорость обратно на 100%.
Если не поймешь как использовать сделаю пример.

Отредактировано FellGuard, 16.06.2007 в 13:51.
Старый 16.06.2007, 03:02
Sailar

offline
Опыт: 8,555
Активность:
Ты в конце обнуляеш это утечка надо в конце ставить call removelocation(x) тэг с анимацией создавать необязательно достаточьно индекс в случие с блейд мастером = 9. И я предлагал так x=позиция кастера y=позиция жертвы лок переменая = polarprojectionbj(x,distancebetweenpoint(x,y)+число, anglebetweenpoints(x,y). Call setunitpositionloc(каст.юнит,переменная)
И где тут утечка???
Старый 16.06.2007, 03:35
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
KLAUD ты юзаешь полярки а это уже утечка. Лан кароч я тут уже пример почти сделал, скоро выложу.
Старый 16.06.2007, 03:49
Sailar

offline
Опыт: 8,555
Активность:
Может это и утечка но маленькая маленькая у меня накарте которуя я делою их полярных много вроде всеё работает не тормазя игру.....
Старый 16.06.2007, 04:36
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
KLAUD это токо на глаз их не много, надо проверять специальной функцией, если интересно я выложу чуть позже. По поводу обнуления оно так и надо.

1max_iron
Вот готово. Движение здесь сделано. С анимациями заниматься не стал, мне некогда, да я думаю ты и сам справишься, там все просто. Также тебе еще надо настроить урон остальное готово. Иногда, блейд промахивается мимо ццели и начинает ездить кругами, это так и задумано, по моему выглядит классно. Если не понравится переделаешь.
Прикрепленные файлы
Тип файла: w3x пример.w3x (14.5 Кбайт, 29 просмотров )

Отредактировано ComotozNick, 16.06.2007 в 04:59.
Старый 16.06.2007, 04:39
dk

offline
Опыт: 60,293
Активность:
Цитата:
Custom script: set Xcor = (GetLocationX(GetUnitLoc(udg_u))+(20*CosBJ(GetUnitFacing(udg_u))))
Custom script: set Ycor = (GetLocationY(GetUnitLoc(udg_u))+(20*SinBJ(GetUnitFacing(udg_u))))

Здесь всеравно получается утечка в две точки, ты сначала вычисляешь точку положения юнита, а потом ее координаты, а в конце точки не удаляются...
Лучше тогда юзать GetUnitX() и GetUnitY()...
Старый 16.06.2007, 06:46
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
Dead_knight черт... *бьется головой об стену*, как я сразу не догадался. Пардон, я просто на работе, так что не особо время есть так что пардон еще раз, приду домой пофиксю.

З.Ы. Да уж ночь на работе сильно снижает внимательность и сообразительность.
Старый 16.06.2007, 09:06
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
KLAUD, а ты попробуй с таймером в 0.0125 потестить на утечки юнитов 20, через минуту максимум игра начнет тормозить. Самое идеальное - юзать координаты без локаций; SetUnitPosition, предупреждая вопросы, страшно тормозит, так как походу мало того что создает, по-видимому, утечки, еще и криво в лучших традициях близов проверяет локацию на проходимость путей для юнита.
SetUnitPositionLoc чуть быстрее, но без локаций вообще всегда приятней жить.

FellGuard добавил:
зы, ComotozNick, ничего, что я поправил :)?
Старый 16.06.2007, 13:51
1max_iron
Death Metal
offline
Опыт: 4,038
Активность:
ComotozNick
Огромное спасибо!То что надо!
Ты не мог бы помочь ещё в кое чём!
Атака иллюзиий:
Блейд мастер становиться невидем для всех(но на панели героев отражаеться!,вокруг цели заклинания создаётся 4 блейд мастера(слева,справа,спереди и сзади по одному!),И все он наносят критический удар(анимация)!
Можешь такое сделать?Если да,то будет очень здорово(зоодно впишу тебя как автора этих двух спеллов!)
Старый 16.06.2007, 14:09
Sailar

offline
Опыт: 8,555
Активность:
У меня в магии учавствуют 3триггера два одновременно по 0.6сек а один 8сек тормоз есть но маленький чуть заметный а точек создаёться около 10 в первом и 1до n - где н юниты в ранге однако даже если уменя их 40 то всё тагже тормоз чуть заметен Он намного сильнее если создать просто 2дамми одновремено в одной точке. А так как точки удаляються сразу как возникают то утечка тока на время каста потом её нету.
Старый 16.06.2007, 16:18
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
вот поставь все то же, но не 0.6 а 0.06, вот тогда и поговорим с тобой об оптимизации. А если у тебя тормоза чуть заметны уже на 0.6, то впору сломя голову нестись переделывать все на координаты.
В самом деле, зачем делать
if not (boolean != true) then когда можено написать
if boolean then ?
вот то же самое и с локациями. Везде где только можно, следует избегать создания и удаления локаций, излишних локальных переменных (при инициализации чуть-чуть оттяпывают времени) итд.
Тем более в периодических триггерах.
Старый 16.06.2007, 16:26
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 06:46.