Движение даммиков по X Y.
Привет. Какой самый эффективный способ проверки положения даммика относительно границ карты? И не просто стандарт границ, которые вокруг всей карты, а вот например если присутствуют различные области, между которыми есть нарисованные границы. Даммики двигаются по X Y. Сначала проверял стандарт методом, используя макс. и мин. значения всей карты и сравнивал, но оно работает только для крайних границ соответственно.

Лучший ответ:
хоспаде, еле нашел
вам можно сказать повезло, там всё на простом джассе, + не забываем заглядывать в место для нестандартного кода, интересующие вас ф-ии это SX() и SY()
аналогично делаем для своих областей, в триггере инициализации я записываю в переменные значения координат игрового ректа, то же самое можно сделать с любой другой областью
управление w a d
*прочитал комменты*
если областей много, то всегда можно склеить из горизонтальных и вертикальных линий что-нибудь, из косых тоже можно, но там более геморно с событием выхода юнита из такой области.
Можно просто запоминать знак на каждом юните относительно каждой прямой, если он поменялся, значит юнит уже по другую сторону от прямой, мб ещё совместить это с системой чанков (и системой которая будет рассчитывать размер чанка относительно максимального радиуса действия спелла и размеров карты, для оптимальных размеров оного), но кому это нужно в вц3?



Просмотров: 2 390

Ancient #1 - 3 года назад (отредактировано ) 0
Вход/выход из области же. Вариант не идеальный, но вполне рабочий.
nvc123 #2 - 3 года назад 2
гдето была система булички которая вроде делала нечто подобное
lll_Kirito_lll #3 - 3 года назад 0
Ancient, Она профитна на одну область
А если их много?
Ancient #4 - 3 года назад 0
Даже если их много, но в таком случае желательно все делать на локальных переменных, во избежание багов.
lll_Kirito_lll #5 - 3 года назад 0
Ancient, Вот по подробнее бы.
Ancient #6 - 3 года назад (отредактировано ) 0
lll_Kirito_lll, 2. Триггеры и объекты xgm.guru/p/wc3/articles Там все предельно понятно.
lll_Kirito_lll #7 - 3 года назад 0
Ancient, И какая именно статья? Их как бы много...
Ancient #8 - 3 года назад (отредактировано ) 0
Все + вот это полностью проштудировать: xgm.guru/p/wc3/jass_introduction

Что за люди пошли, даже не могут найти то что им указали...
lll_Kirito_lll #9 - 3 года назад -2
Ancient, Ты наверное слегка не понял, но раз у тебя все так плохо, то я поясню. Суть вопроса была - Какой самый эффективный способ проверки положения даммика относительно границ карты? И не просто стандарт границ, которые вокруг всей карты, а вот например если присутствуют различные области, между которыми есть нарисованные границы. А не, как локально работать или же что такое Jass и тому подобное. Так что если ты не знаешь прямого ответа на вопрос, то не отвечай вообще. И еще - в академию когда задают вопрос, обычно помогают с пояснениями, что бы тот, кто задал вопрос, понял все. А не просто берут и кидают сылки на статьи и бери и сам ищи. Зачем тогда академия вопросов?
Ancient, И да - я знаю Jass, но впервые решил сделать свой проект, и одна из основ - достижение того, что бы спеллы не залетали за границы карты, будь то нарисованные или стандартные....
Ancient #10 - 3 года назад 2
lll_Kirito_lll, именно так учили меня. Ссылки на статьи и разбирайся сам.

Работа с локальными переменными необходима для того что бы вход/выход с области работал правильно, не забаговываясь. Как раз с помощью него можно отследить попытку войти/выйти в твою "рисованную область". От границ карты - нормали на 4 границы, которые будут возвращать тебе расстояние от позиции твоего дамика до всех 4-х границ карты.

Если тебе что-то советуют, значит знают что это надо. И к этому желательно прислушиватся, а не кидатся грязью не разобравшись в проблеме.
Buulichkaa #11 - 3 года назад (отредактировано ) 0

хоспаде, еле нашел
вам можно сказать повезло, там всё на простом джассе, + не забываем заглядывать в место для нестандартного кода, интересующие вас ф-ии это SX() и SY()
аналогично делаем для своих областей, в триггере инициализации я записываю в переменные значения координат игрового ректа, то же самое можно сделать с любой другой областью
управление w a d
*прочитал комменты*
если областей много, то всегда можно склеить из горизонтальных и вертикальных линий что-нибудь, из косых тоже можно, но там более геморно с событием выхода юнита из такой области.
Можно просто запоминать знак на каждом юните относительно каждой прямой, если он поменялся, значит юнит уже по другую сторону от прямой, мб ещё совместить это с системой чанков (и системой которая будет рассчитывать размер чанка относительно максимального радиуса действия спелла и размеров карты, для оптимальных размеров оного), но кому это нужно в вц3?
16GB #12 - 3 года назад 0
function SafeSpecX takes real pxx,rect r returns real
local real lfr=GetRectMinX(r)+50
if(pxx<lfr)then
return lfr
endif
set lfr=GetRectMaxX(r)-50
if(pxx>lfr)then
return lfr
endif
return pxx
endfunction
function SafeSpecY takes real pyy,rect r returns real
local real lfr=GetRectMinY(r)+50
if(pyy<lfr)then
return lfr
endif
set lfr=GetRectMaxY(r)-50
if(pyy>lfr)then
return lfr
endif
return pyy
endfunction
set a = SafeSpecX(x+kbd*Cos(R),gg_rct_Boss_Area)
set b = SafeSpecY(y+kbd*Sin(R),gg_rct_Boss_Area)
можно типо так
nvc123 #13 - 3 года назад 0
Зачем тогда академия вопросов?
для того чего нету в статьях
или по твоему статьи писали просто так, а то что в них написано должны дублировать в Q/A каждому новичку?
lll_Kirito_lll:
оно работает только для крайних границ соответственно.
а какие границы ещё бывают?
просто я всегда думал что у прямоугольника 4 стороны
lll_Kirito_lll #14 - 3 года назад 0
nvc123, Я имел ввиду для тех, что вокруг карты. А вот если ты нарисуешь черту по центру карты допустим, то условие для нее не проекнет.