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

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

Ответ
 
mm0zzy

offline
Опыт: 1,256
Активность:
Расчет дистанции
И так, перелазил поиск, так ничего стоящего не нашел(может плохо искал) .
В общем у меня триггер: создается юнит (дамми) и движется соответственно указной точки (закл.), при этом имеет определенное время жизни, после чего умирает, то есть заканчивается Таймер истечения. Так вот, как обчислить дистанцию между юнитом (точкой где он умирает(истекает таймер)) и юнитом применившим закл? НО при этом учитывая скорость передвижения самого дамии. Я подсчитал что на 1000 дистанции выходит где то 1.15 сек. при скорости дами 250. Но нужно точное определение, формула...
Старый 09.02.2014, 22:27
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
» садись, два
    real DT2S(real distance, real time){
        return distance / time
    }
    
    real SD2T(real speed, real distance){
        return distance / speed
    }
    
    real ST2D(real speed, real time){
        return speed * time 
    }
    
    real ABU (unit A, unit B) {
        return Atan2(GetUnitY(B)-GetUnitY(A), GetUnitX(B)-GetUnitX(A))*bj_RADTODEG
    }

    real ABUC (unit A, real B_x, real B_y) {
        return Atan2(B_y-GetUnitY(A), B_x-GetUnitX(A))*bj_RADTODEG
    }

    real ABUC2 (real A_x, real A_y, real B_x, real B_y) {
        return Atan2(B_y - A_y, B_x - A_x) * bj_RADTODEG
    }

    real DBU (unit A, unit B) {
        real dx = GetUnitX(B) - GetUnitX(A)
        real dy = GetUnitY(B) - GetUnitY(A)
        return SquareRoot((dx * dx) + (dy * dy))
    }

    real DBC (unit A, real B_x, real B_y) {
        real dx = B_x - GetUnitX(A)
        real dy = B_y - GetUnitY(A)
        return SquareRoot((dx * dx) + (dy * dy))
    }

    real DBC2 (real A_x, real A_y, real B_x, real B_y) {
        real dx = B_x - A_x
        real dy = B_y - A_y
        return SquareRoot((dx * dx) + (dy * dy))
    }

    real DBC_Ex (unit A, real B_x, real B_y) {
        real dx = B_x - GetUnitX(A)
        real dy = B_y - GetUnitY(A)
        return GetMaxAvailableDistanceEx(A, SquareRoot((dx * dx) + (dy * dy)), ABUC(A, B_x, B_y))
    }

    real TBU (unit A, unit B, real speed) {
        real dx = GetUnitX(B) - GetUnitX(A)
        real dy = GetUnitY(B) - GetUnitY(A)
        return (SquareRoot((dx * dx) + (dy * dy)) / speed)
    }

    real TBC (unit A, real B_x, real B_y, real speed) {
        real dx = B_x - GetUnitX(A)
        real dy = B_y - GetUnitY(A)
        return (SquareRoot((dx * dx) + (dy * dy)) / speed)
    }

    real TBC_Ex (unit A, real B_x, real B_y, real speed) {
        real dx = B_x - GetUnitX(A)
        real dy = B_y - GetUnitY(A)
        return (GetMaxAvailableDistanceEx(A, SquareRoot((dx * dx) + (dy * dy)), ABUC(A, B_x, B_y))/speed)
    }

    function DisBtwUaI takes unit u, item i returns real
        local real dx = GetItemX(i) - GetUnitX(u)
        local real dy = GetItemY(i) - GetUnitY(u)
        return SquareRoot(dx * dx + dy * dy)
    endfunction
Старый 09.02.2014, 22:31
mm0zzy

offline
Опыт: 1,256
Активность:
Hate, увы Jass я еще не одолел...иного способа нет?
mm0zzy добавил:
Hate, или хотя бы растолковывать как использовать?
Старый 09.02.2014, 22:39
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
суть в том что это банальный 4 класс математики, формулы нахождения расстояния имя скорость и время и т.д.
что бы найти время нужно
TBC (A, x, y, speed)
где А юнит, х и у координаты, а speed соответственно скорость, функция возвращает время
все эти функции набор для быстрого получения нужной инфы, ничего сложного, просто включите то что находится выше шеи
Старый 09.02.2014, 22:43
Hanabishi
COOL STATUS
offline
Опыт: отключен
Время = расстояние \ скорость
Если вы даже этого не знаете, мне вас искренне жаль
Старый 09.02.2014, 22:52
mm0zzy

offline
Опыт: 1,256
Активность:
Hate, а каким образом это отображается в карте? так как данные мне нужны для ввода в переменных..
Старый 09.02.2014, 22:52
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
mm0zzy:
Hate, а каким образом это отображается в карте? так как данные мне нужны для ввода в переменных..
тяжелый случай... что вы имеете ввиду под "отображается"?
Старый 09.02.2014, 22:54
Buulichkaa
Делаю спеллы за еду
offline
Опыт: 20,146
Активность:
Допустим автор не знает как время расстояние и скорость связаны между собой. Но почему же автор не додумался запускать собственный таймер, с прикрепленным на него юнитом и в функции-обработчике брать координаты юнита-прожектила и обсчитывать расстояние -_-
Старый 09.02.2014, 23:02
mm0zzy

offline
Опыт: 1,256
Активность:
Hate, то что конечные данные выводятся на экран, а не используются в триггере и не в чем либо, суть вопроса была как просчитать время жизни дами юнита с учетом скорости движения в сопоставленному направлении, то есть 1000 дистанции отдаления от юнита который его создал. .
mm0zzy добавил:
Buulichkaa, автор пока что только начинающий в WE и общем
Старый 09.02.2014, 23:09
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
при чем тут отображение на экран? я дал вам набор функций, изучая их уже можно увидеть как что получается какими методами, берете расстояние (1000) делите на скорость полета (допустим 750) и выйдет что даммик прилетит в координаты за ~1.3 сек, вот и делаете ему время жизни на столько
Старый 09.02.2014, 23:24
mm0zzy

offline
Опыт: 1,256
Активность:
Hate, это я знаю, просто скорость движения у меня устанавливается не через переменные или что либо, а в РО как стандартное движение юнита то есть (320 например). Так вот у Вас скор. полета(движения) 750, это если не брать до внимания то что макс. скор(движения) 520 кажеться, это без наработок или чего либо. Так вот по вашим меркам у меня выходит 3.3 сек. если взять значение в РО (про движение ) то он так почти всю карту пролетает...
Старый 09.02.2014, 23:39
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
религия не позволяет поставить в рассчет свою скорость?...................
Старый 09.02.2014, 23:52
mm0zzy

offline
Опыт: 1,256
Активность:
Hate, триггер не позволяет
Старый 10.02.2014, 00:00
Fuzzi

offline
Опыт: 1,797
Активность:
а дамми движется сам по приказу или через полярные координаты?
Старый 10.02.2014, 00:18
mm0zzy

offline
Опыт: 1,256
Активность:
Fuzzi, приказ
mm0zzy добавил:
Fuzzi,
Миниатюры
Кликните на картинку для увеличения
Название:  Без имени-2.jpg
Просмотров: 19
Размер:  127.3 Кбайт  
Старый 10.02.2014, 01:16
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
во первых советую убрать русификатор триггеров
во вторых - прочитать базу статей по триггерам, оптимизации, и введению в jass
Старый 10.02.2014, 02:51
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
Hate, вы достали, я сам пользовался русскими триггерами, пока не перешёл на нормальный код.
В целом, использовать даммика через приказ движения ой как стрёмно, попробуй считать координаты и давать их юниту в периоде.
Старый 10.02.2014, 03:20
mm0zzy

offline
Опыт: 1,256
Активность:
Clamp, почему стремно?
Старый 10.02.2014, 03:56
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
mm0zzy, если мыслить только в рамках варкрафта, то из-за ограничение по скорости, если же подумать пошире, то потому что это не несёт потенциала при дальнейшем изучении программирования
Старый 10.02.2014, 04:33
HolyMoon
Hly shit!
offline
Опыт: 6,986
Активность:
Clamp:
вы достали, я сам пользовался русскими триггерами, пока не перешёл на нормальный код.
на "нормальный код" будет легче перейти с англоязычных триггеров, да и русификатор кривой. То, что ты ими пользовался, не значит, что они есть добро.
Вангую "я работаю в мейл.ру, в аллодс тиам, кококо"
и еще вангую себе варн =(
Старый 10.02.2014, 12:31
Ответ

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

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

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

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



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