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

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

Ответ
 
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
движение по дугам
Нужен код движения по дугам 2х даммиков от героя-кастера, конечная точка удалена от кастера на около 600-650, зеленые дуги - траектории движения даммиков 1 и 2, синяя тонкая линия - Facing кастера. Спасибо.
Миниатюры
Кликните на картинку для увеличения
Название:  1.jpg
Просмотров: 33
Размер:  12.5 Кбайт  
Старый 29.11.2011, 09:13
Fatal
Sleeping awake
offline
Опыт: 1,244
Активность:
1 магия Rexxar - open dota
Старый 29.11.2011, 09:53
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
Fatal, спасибо конечно, но там, насколько я помню, еще был юзан rb.
Старый 29.11.2011, 09:55
Master_chan
Полуночный командир
offline
Опыт: 15,660
Активность:
asesmo, и что? Замене двух функций мы как обычно предпочитаем изобретение велосипеда?
Старый 29.11.2011, 13:44
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
Master_chan, получается что так? Я думал опытные джассеры эти кривые/параболлы наизусть знают?
Старый 29.11.2011, 13:52
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
ну прибавляешь в направлению между точкой и кастером для одного снаряда +10, для второго минус -10
ну если в градусах в радианы если чё переведешь
Старый 29.11.2011, 14:13
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
16GB, это понятно, но как-то же надо понять когда они будут обратно изгибаться к линии фасинга.
Старый 29.11.2011, 14:32
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
Функция параболы
function Parabola takes real h, real d, real x returns real
  return (4 * h / d) * (d - x) * (x / d)
endfunction
Двигаешь даммик сначала как обычно(т.е.
call SetUnitX(dammi,x+distance*Cos(angle))
call SetUnitY(dammi,y+distance*Sin(angle))
Это получается как если бы двигал юнита просто по прямой
Теперь же надо добавить смещение(отрицательное для 1 и положительное для 2),чтобы получилось движение по параболе
//для 1 даммика
call SetUnitX(dammi,x+distance*Cos(angle)+Parabola(MaxHeight,Distance,Rdistance)*Cos(angle-1.570796327))
call SetUnitY(dammi,y+distance*Sin(angle)+Parabola(MaxHeight,Distance,Rdistance)*Sin(angle-1.570796327))
// для 2 даммика
call SetUnitX(dammi,x+distance*Cos(angle)+Parabola(MaxHeight,Distance,Rdistance)*Cos(angle+1.570796327))
call SetUnitY(dammi,y+distance*Sin(angle)+Parabola(MaxHeight,Distance,Rdistance)*Sin(angle+1.570796327))
,где angle - угол в радианах(!) под которым должен двигаться дамми по прямой линии
distance - смещение дамми за 1 такт таймера
1.570796327 - угол в 90 градусов в радианах(для перпендикулярного смещения на полученную из формулы параболы высоту относительно центральной прямой)
((галерея
))
Старый 29.11.2011, 16:46
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
Nerevar, Хорошо, все кажется предельно просто, завтра сделаю сам спелл и отпишусь.
Старый 29.11.2011, 19:46
Ответ

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

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

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

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



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