Вы находитесь на сайте модмейкеров.
Пятница, 17.05.2024, 12:35
Участники · Правила форума · ПОИСК!
  • Страница 1 из 1
  • 1
Форум » Редактор WorldEditor » Библиотека картостроителя » [Статья]Движение юнита
[Статья]Движение юнита
GlaberДата: Суббота, 11.06.2011, 19:30 | Сообщение # 1



Сообщений: 1055

Я расскажу как сделать движение юнита,снаряда(дамми)
Конечно можно сделать это на ГУИ , но еще проще делается на Джасе с Гуем сразу.
В корень карты нужно кинуть вот такой кодик.
Code
function Speed takes unit u, real a returns nothing
          call SetUnitX(u,GetUnitX(u)+70*CosBJ(a))
          call SetUnitY(u,GetUnitY(u)+70*SinBJ(a))
endfunction

Тут все просто меняется
Code

function Speed takes unit u, real a returns nothing - Функция Speed берет юнита u,реальную а , ничего не возвращает.
call SetUnitX(u,GetUnitX(u)+70(скорость)*CosBJ(a ))
call SetUnitY(u,GetUnitY(u)+70(скорость)*SinBJ(a ))

Что вам надо
Надо создать две глобальные переменные Например я создал
UH - боевая еденица
AH - реальная.
С этим поконченно.
Теперь создадим тригер
Speed
Событие- каждые 0.04 секунды
Действие -
Установить AH = Угол поворота(Переключающий юнит)
Custom Script: call Speed(udg_AH,udg_UH)
Теперь другой тригер
Событие - Юнит приводит способность в действие
Условие - спелл = Ускорение(так я назвал свой спелл)
Действие -
Установить UH = Переключающий юнит()
Установить AH = Угол поворота(Переключающий юнит)
Включить тригер Speed
Ждать 10 секунд
Выключить тригер Speed
//=============================================
И так что же у нас получилось?
Когда герой использует спелл - Ускорение
Запускается тригер устанавливающий Угол поворота Юнита(куда он смотрел во время каста)
и самого юнита.
После включает тригер который каждые 0.04 секунды двигает юнита и устанавливает угол поворота заного!
Т.е во время движения вы сможете еще и управлять юнитом!(чтобы убрать это уберите в тригере speed установление переменной)
И в конце - спустя 10 секунд герой остановиться!
(Скорость во время движения узнаётся из функции - помните у меня скорости были 70 и 70 (умножде их друг на друга = скорость))
Карта пример внизу.
Как не вылететь за карту!
При использовании таково метода движения юнита есть вероятность что он вылетит за карту(За её границы)
Есть способ на джассе как этого избежать , но у меня есть способ по понятнее(на ГУЕ)
И так по всем границам карты Раставьте 4-е Региона(сделайте по границам квадрат из регионов(см.карту пример))
И Сделайте простой тригер
Событие - Юнит входит в область 1
Юнит входит в область 2
Юнит входит в область 3
Юнит входит в область 4
Действие - Двигать юнита(переключающий юнит) в центр карты(например)
Вот и все!...

Примечание*
в карте примере у меня в корне карты вот такой код вместо того что я показал вам в начале.
Code
function Speed takes unit u, real a returns nothing
         call SetUnitX(u,GetUnitX(u)+70*CosBJ(a))
         call SetUnitY(u,GetUnitY(u)+70*SinBJ(a))
endfunction

function Fire takes unit s, real d returns nothing
         call SetUnitX(s,GetUnitX(s)+20*CosBJ(d))
         call SetUnitY(s,GetUnitY(s)+20*SinBJ(d))
endfunction

function Jump takes unit z, real x returns nothing
         call SetUnitX(z,GetUnitX(z)+60*CosBJ(x))
         call SetUnitY(z,GetUnitY(z)+60*SinBJ(x))
endfunction

Это код на 3 разных спелла вам же нужен самый верхний - начинается
Code
function Speed takes unit u, real a returns nothing

Так же в карте примери в тригере чтобы не вылететь за карту тоже чуть чуть другой.
Там if/then/elsev - т.к у меня есть спелл там на снаряд и мне надо чтобы долетев до края карты он уничтожался(он не так важен как герой - согласитесь)
* Так же чтобы не вылететь за карту можно в тригере speed устанавливать точку юнита(незабывайте её удалять и обнулять )
Code
call RemoveLocation(имя переменной)
set имя переменной = null

И тогда можно при поподении на край границы двигать юнита в последнюю точку где он был.
(Правдо я незнаю как это выглядит)
Прикрепления: 0755553.w3x (22.1 Kb)




Сообщение отредактировал F@lk - Воскресенье, 12.06.2011, 09:23
--
DoomDemonДата: Воскресенье, 12.06.2011, 07:34 | Сообщение # 2



Сообщений: 781

Я делал на гуи :)

--
GlaberДата: Воскресенье, 12.06.2011, 09:05 | Сообщение # 3



Сообщений: 1055

DoomDemon,
^^ - так помойму лгече)


--
DoomDemonДата: Воскресенье, 12.06.2011, 09:37 | Сообщение # 4



Сообщений: 781

На гуи легче happy

--
GlaberДата: Воскресенье, 12.06.2011, 09:39 | Сообщение # 5



Сообщений: 1055

DoomDemon,
Нет , тут смесь джасса с ГУЕм
и надо всего 4-е строчки 2 переменные и 2 тригера (можно и 1)

Добавлено (12.06.2011, 09:39)
---------------------------------------------
DoomDemon, Хтя я хз я на Гуе даже не пробывал ибо муторно какт


--
Форум » Редактор WorldEditor » Библиотека картостроителя » [Статья]Движение юнита
  • Страница 1 из 1
  • 1
Поиск:

W3 - Всё для картостроения. 2024-2010 |