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

naxim, можно сделать wait 0.40 Этого хватит, чтобы всё прореагировало...
`
ОЖИДАНИЕ РЕКЛАМЫ...
33
Unit Enters Region? В действиях, соответственно, к «зоне» обращаться как Triggering Region.
1
Кет, ну проблема в том. что у меня несколько зон. возможно ли найти Triggering area для определения оной.
хочется сделать все в 1м скрипте а не к каждой зоне.
Кет, , а тогда такой вопрос... как обратиться? излазил все условия не нашел конкретно Triggering region, находил maxX,maxY и т.д. если не сложно можно пример?
33
А, блин, я забыл, что 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
33
Как на GUI решить эту проблему именно так, как ты хочешь, я даже и не знаю. Если попробовать по-другому, самое простое — сделать три триггера.
TriggeringRegion есть на GUI в UMSWE, но от этого не легче — области в игре создаются в виде переменных другого типа, чем возвращает это событие. Хз, почему так.
А, можно после срабатывания триггера проверять, в какой области находится юнит. Это тип условия Boolean Comparison, функция «Боевая единица — Unit In Region».
24
Логическое - юнит в регионе. Придётся проверять каждый отдельно. Или изначально занести все зоны в переменные[] и потом проверять циклом
16
А, можно после срабатывания триггера проверять, в какой области находится юнит. Это тип условия Boolean Comparison, функция «Боевая единица — Unit In Region».
Циклом. Но беда в том, что в момент, когда срабатывает событие вхождения юнита в регион, функция «Боевая единица — Unit In Region» не вернёт юнита в регионе, в который он вошёл, т.к. юнит должен успеть пройти дальше в регион, чтобы быть в нём.
Поэтому надо делать два региона. Один чуть больше и внутри него другой. И когда событие на вхождение во внутренний срабатывает, проверять находится ли юнит во внешнем.
24
naxim, можно сделать wait 0.40 Этого хватит, чтобы всё прореагировало...
Принятый ответ
24
Потому что за меньше он не успевает среагировать и сказать, что да, юнит в регионе. Triggering unit не теряется, так что вейт не покорябает ничего...
16
Konstantin7, так?
С действием "Set OuterRect[2] = InnerRect02 <gen>" ошибся, переделай в "Set OuterRect[2] = OuterRect02 <gen>".
Melissa:
Потому что за меньше он не успевает среагировать и сказать, что да, юнит в регионе. Triggering unit не теряется, так что вейт не покорябает ничего...
Можно и так.
Загруженные файлы
Чтобы оставить комментарий, пожалуйста, войдите на сайт.