Доброго времени суток. у меня такой вопрос можно ли как-то отловить зону по принципу:
юнит вошел в зону А
юнит вошел в зону Б
юнит вошел в зону В
Если Зона = зона А
Действие...
или же как-то занести данную зону в переменную?

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

naxim, можно сделать wait 0.40 Этого хватит, чтобы всё прореагировало...
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
33
9 лет назад
Отредактирован Кет
0
Unit Enters Region? В действиях, соответственно, к «зоне» обращаться как Triggering Region.
0
1
9 лет назад
0
Кет, ну проблема в том. что у меня несколько зон. возможно ли найти Triggering area для определения оной.
хочется сделать все в 1м скрипте а не к каждой зоне.
Кет, , а тогда такой вопрос... как обратиться? излазил все условия не нашел конкретно Triggering region, находил maxX,maxY и т.д. если не сложно можно пример?
1
33
9 лет назад
Отредактирован Кет
1
А, блин, я забыл, что region и rect — не одно и то же.
Если знаешь JASS, можно так:
globals
    region reg1
    region reg2
    region reg3
endglobals

function Trig_region_Actions takes nothing returns nothing
    if GetTriggeringRegion() = reg1 then
        // do thing
    elseif GetTriggeringRegion() = reg2 then
        // do other thing
    else
        // do something
    endif
endfunction

//===========================================================================
function InitTrig_region takes nothing returns nothing
    set gg_trg_region = CreateTrigger()
    set reg1 = CreateRegion()
    call RegionAddRect(gg_rct_rect1)
    set reg2 = CreateRegion()
    call RegionAddRect(gg_rct_rect2)
    set reg3 = CreateRegion()
    call RegionAddRect(gg_rct_rect3)
    call TriggerRegisterEnterRegion(gg_trg_region, reg1, null)
    call TriggerRegisterEnterRegion(gg_trg_region, reg2, null)
    call TriggerRegisterEnterRegion(gg_trg_region, reg3, null)
    call TriggerAddAction(gg_trg_region, function Trig_region_Actions)
endfunction
0
1
9 лет назад
Отредактирован Konstantin7
0
Кет, а без Jass не вомзножо?
2
33
9 лет назад
Отредактирован Кет
2
Как на GUI решить эту проблему именно так, как ты хочешь, я даже и не знаю. Если попробовать по-другому, самое простое — сделать три триггера.
TriggeringRegion есть на GUI в UMSWE, но от этого не легче — области в игре создаются в виде переменных другого типа, чем возвращает это событие. Хз, почему так.
А, можно после срабатывания триггера проверять, в какой области находится юнит. Это тип условия Boolean Comparison, функция «Боевая единица — Unit In Region».
0
24
9 лет назад
Отредактирован Melissa
0
Логическое - юнит в регионе. Придётся проверять каждый отдельно. Или изначально занести все зоны в переменные[] и потом проверять циклом
0
17
9 лет назад
0
А, можно после срабатывания триггера проверять, в какой области находится юнит. Это тип условия Boolean Comparison, функция «Боевая единица — Unit In Region».
Циклом. Но беда в том, что в момент, когда срабатывает событие вхождения юнита в регион, функция «Боевая единица — Unit In Region» не вернёт юнита в регионе, в который он вошёл, т.к. юнит должен успеть пройти дальше в регион, чтобы быть в нём.
Поэтому надо делать два региона. Один чуть больше и внутри него другой. И когда событие на вхождение во внутренний срабатывает, проверять находится ли юнит во внешнем.
0
24
9 лет назад
0
naxim, можно сделать wait 0.40 Этого хватит, чтобы всё прореагировало...
Принятый ответ
0
17
9 лет назад
0
wait 0.40
Почему именно 0.40?
0
24
9 лет назад
0
Потому что за меньше он не успевает среагировать и сказать, что да, юнит в регионе. Triggering unit не теряется, так что вейт не покорябает ничего...
0
17
9 лет назад
Отредактирован naxim
0
Konstantin7, так?
С действием "Set OuterRect[2] = InnerRect02 <gen>" ошибся, переделай в "Set OuterRect[2] = OuterRect02 <gen>".
Melissa:
Потому что за меньше он не успевает среагировать и сказать, что да, юнит в регионе. Triggering unit не теряется, так что вейт не покорябает ничего...
Можно и так.
Загруженные файлы
Чтобы оставить комментарий, пожалуйста, войдите на сайт.