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

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

Ответ
 
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
Побег
Как сделать систему, чтобы юнит, когда к ниму подходят на какое-то расстояние бежал от врага?
Пример, Точка A-юнит который стоит на месте, Точка B-юнит который подходит к нему,и нужно приказать A бежать по вектору BA, т.е. отдаляясь от B
Старый 24.09.2011, 11:40
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
Проверять расстояние между юнитами и если это расстояние меньше должного, то приказывать юниту сваливать в направлении противопложном юниту врага (ну или кто он там). Рассчитывать точку приказа через оффсет.
Старый 24.09.2011, 12:04
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
Vampirrr:
Проверять расстояние между юнитами и если это расстояние меньше должного, то приказывать юниту сваливать в направлении противопложном юниту врага (ну или кто он там). Рассчитывать точку приказа через оффсет.
это я понял, нужна реализация... я с оффсетами неочень дружу.
Старый 24.09.2011, 12:07
Master_chan
Полуночный командир
offline
Опыт: 15,660
Активность:
Srezik:
я с оффсетами неочень дружу
Ты, jass и геометрия. Формула простейшая, просто вникнуть в теорию. Восьмой класс вроде как. Или девятый.
Старый 24.09.2011, 12:09
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
Master_chan:
Ты, jass и геометрия. Формула простейшая, просто вникнуть в теорию.
Srezik:
нужна реализация...
я же сказал, не знаю как юзать point with polar offset
Старый 24.09.2011, 12:16
Master_chan
Полуночный командир
offline
Опыт: 15,660
Активность:
Srezik:
нужна реализация...
Ну мало ли что вам нужно... Уже вроде как не раз упоминали, что вам тут не стол заказов.
Polar offset это способ представления точки не через координаты (x,y), а через угол и расстояние.
Старый 24.09.2011, 12:19
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
UnitX + Distance*Cos(PotentiallyDangerousUnitFacing+180)
UnitY + Distance*Sin(PotentiallyDangerousUnitFacing+180)
Собственно вот и все формулы.
Старый 24.09.2011, 12:19
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
Master_chan:
что вам тут не стол заказов.
Так а что мне делать если я немогу это сделать?
Vampirrr:
Собственно вот и все формулы.
Блин... Что с этими формулами делать то?
Srezik добавил:
IssuePointOrderLoc(u, "move", PolarProjection(GetUnitLoc(u), 300, angle(сюда и надо вставить как-то вектор...)))
я правильно понимаю?

Отредактировано Srezik, 24.09.2011 в 12:58.
Старый 24.09.2011, 12:53
Hanabishi
COOL STATUS
offline
Опыт: отключен
Люди не понимают слов, не можешь - не лезь.
Готовая функция:
function RunAwayIf takes unit A, unit B, real distance returns nothing
    local real angle
    local real dx = GetUnitX(B)-GetUnitX(A)
    local real dy = GetUnitY(B)-GetUnitY(A)
    if SquareRoot(dx*dx+dy*dy)<distance then
        set angle = Atan2(GetUnitY(A)-GetUnitY(B),GetUnitX(A)-GetUnitX(B))
        call IssuePointOrder(A,"move",GetUnitX(B)+distance*Cos(angle),GetUnitY(B)+distance*Sin(angle))
    endif
endfunction
PolarProjection утечная говнобж, надо всё делать руками.
Старый 29.09.2011, 14:36
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
Hanabishi, огромное спасибо... теперь думаю над событием... Событие a unit becomes range withing real of unit-сюда нельзя вставить переменную
Старый 29.09.2011, 19:25
LostCoast

offline
Опыт: 2,633
Активность:
как вариант дать кастеру ауру, сделать триггер запущенный таймером и в условии проверять на наличие у вражеского юнита баффа от ауры
Старый 29.09.2011, 21:41
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
LostCoast:
как вариант дать кастеру ауру, сделать триггер запущенный таймером и в условии проверять на наличие у вражеского юнита баффа от ауры
дело в том, что это не от кастера убегают, а от любого юнита.
Старый 30.09.2011, 08:41
LostCoast

offline
Опыт: 2,633
Активность:
Srezik:
дело в том, что это не от кастера убегают, а от любого юнита.
тогда проверяй если рядом с инитом враг(вариант с бафом попроще)
Старый 30.09.2011, 09:59
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
LostCoast:
с инитом враг
И тут загвостка, убегают от любого юнита определённые юниты, т.е. их может быть сколько угодно
Старый 30.09.2011, 11:19
Hanabishi
COOL STATUS
offline
Опыт: отключен
Таймером или переодическим триггером пикай нужных юнитов, вокруг них пикай нужных в радиусе. Тогда можно будет вообще убрать проверку на расстояние и заместо distance вставить переменную с радиусом.
Старый 30.09.2011, 13:18
Ответ

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

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

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

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



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