И так
Проблема заключается в следующем: у юнита А сбиваются поиски пути когда он пытается перелетит в розовую точку. Синяя область является набором непроходимых декораций. Юниту псведополёт даётся за счёт отключения поиска пути, функцией
SetUnitPathing(u,false)
У юнита В всё теже параметры и он отлично проходит до розовой точки если сначала сделать клик в желтую область, хотя поидее отдаётся приказ в непроходимую область. Ну и ладно.
Юнит С Имеет тип движения "летающий" из редактора объектов и вот только он адекватно выполняет отданный приказ.
А теперь вопросы:
Каким образом сделать юнита летающим на время полноценно? знаю точно поможет морф, но это не универсально уж очень, но можно 50 объектов задвоить, и создать бд, но делать такого мы не станем.
На момент полёта отключить варовское движение и включить своё? боюсь что тоже будет очень громозко.
Пробовал
Юнит С Имеет тип движения "летающий" из редактора объектов и вот только он адекватно выполняет отданный приказ.
А теперь вопросы:
Каким образом сделать юнита летающим на время полноценно? знаю точно поможет морф, но это не универсально уж очень, но можно 50 объектов задвоить, и создать бд, но делать такого мы не станем.
На момент полёта отключить варовское движение и включить своё? боюсь что тоже будет очень громозко.
Пробовал
MakeUnitFly(u) // через сфинкса или друида
и
UnitAddType(u,UNIT_TYPE_FLYING)
Но это ничего не даст.
В общем как мне быть, Как заставить юнита вести себя как летающий на время
В общем как мне быть, Как заставить юнита вести себя как летающий на время
Принятый ответ
Отлично, значит мы можем однозначно соотнести номер игрока с юнитом в массиве?
- переключившихся в летающий режим героев добавляем в глобальную группу
- запускаем таймер на малом периоде, что-то около 0.04, который перебирает всех в группе и выполняет смещение к взятой из массива точке со скоростью движения героя (тут можно экспериментировать с разными алгоритмами движения, главное что все данные мы можем легко получить из массива по номеру игрока которому принадлежит юнит)
- отслеживаем все приказы для героев в состоянии полета и на основе этого запоминаем текущую точку куда юнит должен двигаться и прочие данные, записываем эти данные в массив
- при отключении полета убираем героя из группы и перестаем отслеживать его приказы
А, т.е. в карте уже есть системы триггерного движения? Значит самое время унифицировать их в одну, чтобы одна и та же система управляла и полетом и физикой и другими видами триггерного движения.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Но если делать триггерный полет, то лучше сразу объединять все системы триггерного движения в одну, чтобы один таймер двигал всех триггерно двигаемых на основе данных из массива, а данные чтобы заполнялись по разному в зависимости от текущих условий.