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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
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, просто уметь понять как работает варик это же близзард =)
Да это гениально!!!
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.