Здравствуйте, уважаемые знатоки World Editorа третьего Варкрафта. Очень нужна ваша помощь.
Как сделать так, чтобы юнит, подходя к границе карты мгновенно оказывался возле другой, но так, чтобы появился именно на той координате, на какой был подходя к границе карты (Знаю, легко запутаться в этом вопросе). То есть, если, скажем, юнит подходит к углу левой границы карты, он мгновенно перемещается к углу правой границы карты.
Поиск по триггерам не принес должного результата. Из всех действий, на перемещение годиться лишь Боевая единица - Move, но там перемещение либо к центру региона, либо к рандомной точке региона.

ну вот смотрите
function MirrorCoords takes unit a returns nothing
        local real x_a = GetUnitX(a)
        local real y_a = GetUnitY(a)
        local real x
        local real y

            if x_a  < 0. then
                set x = RAbsBJ(x_a)
            else
                set x = x_a - (x_a + x_a)
            endif
            
            if y_a < 0. then
                set y = RAbsBJ(y_a)
            else
                set y = y_a - (y_a + y_a)
            endif
            
            call SetUnitX(a, x)
            call SetUnitY(a, y)
    endfunction
во первых .проверяем на ось Х, если меньше 0, то конвертируем функцией в противоположное значение, функция Absolute в гуи, иначе просто уменьшаем х на двойное значение самого себя
тоже самое по оси У
а затем просто присваиваем данные координаты
в гуи будет слишком криво, поэтому лучше скопируйте в шапку карты и вызывайте через кастом скрипт при покидании игрового региона
call MirrorCoords(GetTriggerUnit())
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
3
Hate:
вот зачем вы врете?
Я не договорил. Я создал два региона, размером с высоту карты, по одному с каждой стороны. Мне кажется, будет сложно для каждой малой координаты переписывать весь триггер. Хочется, чтобы не пришлось так заморачиваться, и написать один триггер на всю ось Y (или X)
26
вам нужно именно что бы он зеркально появлялся относительно двух осей или одной?
если двух. то юнит будет зеркально менять свои координаты, если одной, то появляться зеркально только по одной стороне
3
Hate:
вам нужно именно что бы он зеркально появлялся относительно двух осей или одной?
если двух. то юнит будет зеркально менять свои координаты, если одной, то появляться зеркально только по одной стороне
Вот, именно это я и хочу. Чтобы зеркально менял свои координаты по двум осям, но при этом, чтобы умещалось в минимум триггеров. Эффект планеты, типа
27
можно относительно центра области считывать. Кстати есть функции макс. и мин. высоту и макс. и мин. ширину, то по этим можно углы областей найти
кстати можно использовать порталы, и можно триггерно назначать куда телепортнуть. Преимущество - у юнита составляет маршрут, типа кликаешь в нужную точку и он сам дойдет до телепорта и доберется куда надо.
3
Steal nerves:
можно относительно центра области считывать. Кстати есть функции макс. и мин. высоту и макс. и мин. ширину, то по этим можно углы областей найти
кстати можно использовать порталы, и можно триггерно назначать куда телепортнуть. Преимущество - у юнита составляет маршрут, типа кликаешь в нужную точку и он сам дойдет до телепорта и доберется куда надо.
Тогда нарушится атмосфера карты. Я же делаю карту по мотивам этапа Цивилизации из игры Spore
26
ну вот смотрите
function MirrorCoords takes unit a returns nothing
        local real x_a = GetUnitX(a)
        local real y_a = GetUnitY(a)
        local real x
        local real y

            if x_a  < 0. then
                set x = RAbsBJ(x_a)
            else
                set x = x_a - (x_a + x_a)
            endif
            
            if y_a < 0. then
                set y = RAbsBJ(y_a)
            else
                set y = y_a - (y_a + y_a)
            endif
            
            call SetUnitX(a, x)
            call SetUnitY(a, y)
    endfunction
во первых .проверяем на ось Х, если меньше 0, то конвертируем функцией в противоположное значение, функция Absolute в гуи, иначе просто уменьшаем х на двойное значение самого себя
тоже самое по оси У
а затем просто присваиваем данные координаты
в гуи будет слишком криво, поэтому лучше скопируйте в шапку карты и вызывайте через кастом скрипт при покидании игрового региона
call MirrorCoords(GetTriggerUnit())
Принятый ответ
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.