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

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

Скорее всего тут идёт проверка на то, находится ли юнит в области, сразу после того как он в неё попадает (запускает ивент).
Дело в том что из-за особенностей физического размера юнитов, они по XY находятся не совсем там, где мы их видим... Поэтому допустим аура с 900 ренжа может задевать юнитов на краях, т.к. она высчитывает расстояние до них с учётом физ.размера. А триггерный выбор юнитов в радиусе 900 от точки часть юнитов на краю упустит, а другую - зацепит, которые не были захвачены аурой (т.к. идёт смещение в сторону из-за координат).
Единственное рациональное решение указанной проблемы - перерасчёт координат юнита опираясь на его физ.размер.
Для решения проблемы с областями можно просто "подождать" лишние 0.1 - 0.4 секунды и только потом проверить находится ли юнит в области (топорно, но работать будет).
0
19
7 лет назад
0
Похожие вопросы:

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

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

Шучу, ответ уже есть (выше)
0
23
7 лет назад
0
Maniac_91, просто уметь понять как работает варик это же близзард =)
0
26
7 лет назад
0
JyHgle:
Maniac_91, такой бред не слышал! Все работает нормально =) Надо проверять
события: юнит вошел в облость
условие: юнит в облости равен да
дейсвтя: выполняем задачу
В самом редакторе указано, что нужно в условие ставить Entering unit.
JyHgle:
Maniac_91, просто уметь понять как работает варик это же близзард =)
Да это гениально!!!
Чтобы оставить комментарий, пожалуйста, войдите на сайт.