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

Принятый ответ

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
9
9 лет назад
0
Ancient, И какая именно статья? Их как бы много...
0
25
9 лет назад
Отредактирован Ancient
0
Все + вот это полностью проштудировать: xgm.guru/p/wc3/jass_introduction

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

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

Если тебе что-то советуют, значит знают что это надо. И к этому желательно прислушиватся, а не кидатся грязью не разобравшись в проблеме.
0
21
9 лет назад
Отредактирован Buulichkaa
0
хоспаде, еле нашел
вам можно сказать повезло, там всё на простом джассе, + не забываем заглядывать в место для нестандартного кода, интересующие вас ф-ии это SX() и SY()
аналогично делаем для своих областей, в триггере инициализации я записываю в переменные значения координат игрового ректа, то же самое можно сделать с любой другой областью
управление w a d
*прочитал комменты*
если областей много, то всегда можно склеить из горизонтальных и вертикальных линий что-нибудь, из косых тоже можно, но там более геморно с событием выхода юнита из такой области.
Можно просто запоминать знак на каждом юните относительно каждой прямой, если он поменялся, значит юнит уже по другую сторону от прямой, мб ещё совместить это с системой чанков (и системой которая будет рассчитывать размер чанка относительно максимального радиуса действия спелла и размеров карты, для оптимальных размеров оного), но кому это нужно в вц3?
Принятый ответ
0
29
9 лет назад
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)
можно типо так
0
28
9 лет назад
0
Зачем тогда академия вопросов?
для того чего нету в статьях
или по твоему статьи писали просто так, а то что в них написано должны дублировать в Q/A каждому новичку?
lll_Kirito_lll:
оно работает только для крайних границ соответственно.
а какие границы ещё бывают?
просто я всегда думал что у прямоугольника 4 стороны
0
9
9 лет назад
0
nvc123, Я имел ввиду для тех, что вокруг карты. А вот если ты нарисуешь черту по центру карты допустим, то условие для нее не проекнет.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.