Здравствуйте, друзья!
Несколько раз сталкивались с такой проблемой, что триггер реагирует на упомянутое в заголовке событие иногда лишь в том случае, если юнит заходит в область слева или снизу, а если зайдёт сверху или справа, то ничего не произойдёт.
С чем это может быть связано?

Скорее всего тут идёт проверка на то, находится ли юнит в области, сразу после того как он в неё попадает (запускает ивент).
Дело в том что из-за особенностей физического размера юнитов, они по XY находятся не совсем там, где мы их видим... Поэтому допустим аура с 900 ренжа может задевать юнитов на краях, т.к. она высчитывает расстояние до них с учётом физ.размера. А триггерный выбор юнитов в радиусе 900 от точки часть юнитов на краю упустит, а другую - зацепит, которые не были захвачены аурой (т.к. идёт смещение в сторону из-за координат).
Единственное рациональное решение указанной проблемы - перерасчёт координат юнита опираясь на его физ.размер.
Для решения проблемы с областями можно просто "подождать" лишние 0.1 - 0.4 секунды и только потом проверить находится ли юнит в области (топорно, но работать будет).
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
23
Похожие вопросы:

ответ
область- x1 x2 y1 y2
Если координата юнита x1<=X=<x2 и y1<=Y<=y2, то юнит в области с этими координатами. Иначе его там нет. Да и в гуи, вроде было, область содержит точку
ответ
Ну у мастера клинка способность то посложнее...
Вот пример:
Для начала нам нужно создать иллюзии героя, а потом скрыть всех их, так же сделав визуальный эффект (если что то зеленые тени, это снаряды).
ответ
Аура не сразу вешается на юнита, нужна задержка.

32
8gabriel8, с вашей областью все впорядке, вероятно юнит либо не входит в область либо в ней уже появился этот юнит.
Дебаг решит вашу проблему. Так же проверьте верно ли условие триггера или boolexpr, мб вы неправильно сделали проверку.
26
Скорее всего тут идёт проверка на то, находится ли юнит в области, сразу после того как он в неё попадает (запускает ивент).
Дело в том что из-за особенностей физического размера юнитов, они по XY находятся не совсем там, где мы их видим... Поэтому допустим аура с 900 ренжа может задевать юнитов на краях, т.к. она высчитывает расстояние до них с учётом физ.размера. А триггерный выбор юнитов в радиусе 900 от точки часть юнитов на краю упустит, а другую - зацепит, которые не были захвачены аурой (т.к. идёт смещение в сторону из-за координат).
Единственное рациональное решение указанной проблемы - перерасчёт координат юнита опираясь на его физ.размер.
Для решения проблемы с областями можно просто "подождать" лишние 0.1 - 0.4 секунды и только потом проверить находится ли юнит в области (топорно, но работать будет).
Принятый ответ
26
quq_CCCP, я пока не дома, чтобы проверить)
Extremator, если я правильно понял вас, то тут не проверка юнита в области, а именно вхождение юнита в область. Есть довольно крупная область, площадь примерно 3х3 ратуши. При входе в неё с запада или юга запускается кинематика. Но когда я решил в неё войти с севера или востока, то ничего не произошло. Я там погулял, вышел и зашёл с того же направления, но ничего. Только зайдя потом с востока, триггер сработал.
18
8gabriel8, если скинуть скриншот триггера (а ещё, на всякий случай, области), то будет больше шансов на быстрый и правильный ответ.
Скорее всего, как сказано выше, условия триггера неправильные.
Ещё может быть то, что этот триггер отключается другим триггером.
Или областей несколько рядом, а в триггере выбрана не та.
26
Господа, я пришёл домой, проверил дебагом, одновременно увидел возможную причину в том, о чём сказал Extremator, то есть в проверке юнита в области, а не проверке того, какой юнит вошёл в область, наделал скриншотов и поправил триггер.
Сначала скриншоты, вот здесь триггер и Область 006:
А тут дебаг в игре, где я сначала повходил в Область 006 с севера и востока, а потом зашёл в неё с юга (до этого с запада уже входил):
В первом случае триггер не срабатывает, а во втором срабатывает.
Ну и в итоге я заменил условие с проверки юнита в области на Entering unit равно Юнит, проверил -нормально работает.
18
8gabriel8, кажется, я понял, в чём дело. Входящий юнит почему-то не всегда находится в области, в которую вошёл (где-то читал, что триггер срабатывает немного раньше, чем происходит событие).
Для решения этой проблемы нужно создать ещё область, которая больше той, куда установлено событие входа. И проверять наличие юнита в большой области.
Мой вопрос - xgm.guru/p/wc3/167810
Здесь прицеплена карта-пример - xgm.guru/p/wc3/167965?postid=316923#comment23
22
Maniac_91, такой бред не слышал! Все работает нормально =) Надо проверять
события: юнит вошел в облость
условие: юнит в облости равен да
дейсвтя: выполняем задачу
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.