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

Отлично, значит мы можем однозначно соотнести номер игрока с юнитом в массиве?
  • переключившихся в летающий режим героев добавляем в глобальную группу
  • запускаем таймер на малом периоде, что-то около 0.04, который перебирает всех в группе и выполняет смещение к взятой из массива точке со скоростью движения героя (тут можно экспериментировать с разными алгоритмами движения, главное что все данные мы можем легко получить из массива по номеру игрока которому принадлежит юнит)
  • отслеживаем все приказы для героев в состоянии полета и на основе этого запоминаем текущую точку куда юнит должен двигаться и прочие данные, записываем эти данные в массив
  • при отключении полета убираем героя из группы и перестаем отслеживать его приказы

А, т.е. в карте уже есть системы триггерного движения? Значит самое время унифицировать их в одну, чтобы одна и та же система управляла и полетом и физикой и другими видами триггерного движения.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
33
Чтобы увидеть сие дикие проблемы достаточно подобрать пару пропеллеров в моей единственной карте про танчики, но вот прикладываю видео
На ютуб не стал заливать, думаю откроется. На видео я сначала делаю клик в нужно область и юнит начинает обходить согласно схеме поведения А, но на втором пролёте я клацаю в воду декор и всё уже нормально, но новички то не знаю что надо так клацать под ноги и у них герои летают куда попало, потому что ищут пути обхода, неясно зачем вообще..
Загруженные файлы
16
движок не обрабатывает случай проходимости отдельн ои считает юнита наземным, это никак не фиксится. Нужно превращать юнита полноценно в летающую альтернативу. Я даже на мемхаке еще не нашел перелкючатель этот чертов
Этот комментарий удален
21
а ворона ему дать в скрытом спеллбуке ситуацию не улучшало? бредовато, но раз после дачи-отдачи ворона у юнита можно менять высоту, мб что-то там отчасти на нём помечается в стиле "типа летает"
33
цитата самого себя "MakeUnitFly(u) через сфинкса или друида", друида-ворона разумеется я имел ввиду, просто забыл как называется, и в спеллбуке давал и в открытую давал и добавлял / удалял - результата никакого, движок считает юнита наземным
24
А отдельных юнитов которые должны получать этот псевдополет много одновременно на карте?
Если юнитов не слишком много, то вполне реально реализовать полностью триггерное движение в режиме псевдополета, особенно если это один герой на каждого игрока.
33
это способность одного героя, или похожим эффектом полёта обладают прыгающие способности, или применение через предмет, а героев одновременно всего 4 может быть, так что максимальное количество 4, какие то идеи? надеюсь не через блокираторы воздуха?
prog:
полностью триггерное движение в режиме псевдополета
Пока что это единственный выход который я вижу
В целом мне не сложно это сделать, но это вызовет огромные накладки с другими система триггерного движения, особенно с физическим движком, так что уйдёт неделя на полную отладку или вообще время впустую потрачу
24
Отлично, значит мы можем однозначно соотнести номер игрока с юнитом в массиве?
  • переключившихся в летающий режим героев добавляем в глобальную группу
  • запускаем таймер на малом периоде, что-то около 0.04, который перебирает всех в группе и выполняет смещение к взятой из массива точке со скоростью движения героя (тут можно экспериментировать с разными алгоритмами движения, главное что все данные мы можем легко получить из массива по номеру игрока которому принадлежит юнит)
  • отслеживаем все приказы для героев в состоянии полета и на основе этого запоминаем текущую точку куда юнит должен двигаться и прочие данные, записываем эти данные в массив
  • при отключении полета убираем героя из группы и перестаем отслеживать его приказы

А, т.е. в карте уже есть системы триггерного движения? Значит самое время унифицировать их в одну, чтобы одна и та же система управляла и полетом и физикой и другими видами триггерного движения.
Принятый ответ
33
отслеживаем все приказы для героев в состоянии полета и на основе этого запоминаем текущую точку куда юнит должен двигаться и прочие данные, записываем эти данные в массив
остальное то всё понятно изи, кроме процитированного, что значит отслеживать все приказы, запомнить точку то ладно, а движение реагировать на приказ смарт, и остановку на стоп, других приказов нет, я их удалил, остались только приказы способностей.... как вариант вижу скорость в 0 естественно обнулять чтобы не пошёл в полёте по приказу кастовать чё-нить, буду пробовать, че ещё делать-то. Но самое плохое это накладки на других системах, система хождения по второму уровню блоков / системы толчков и магнетизма
18
А если на время полёта прятать юнита, создавать (или перемещать заранее созданного) юнита-дамми с такими же характеристиками? А после полёта прятать дамми и перемещать спрятанного юнита к месту завершения полёта. Но нужно будет триггерно копировать все их изменения друг другу (в зависимости от того, какой юнит управляется на текущий момент).
33
Maniac_91, чё то не получиться, потому что нужно продолжать уметь применять способности, предметы,перезарядки их, и не терять контроль, иначе я бы сделал способность по другому "перелёт в точку", и полностью триггерно бы сдвигал юнитов. Жаль что мне не повторить с нуля полностью поиск варкрафта, тогда бы можно было чисто на своей системе движения сидеть.. пилю свою систему для полёта, чё уже делать, хотя о ней по факту никто и не узнает что она есть, просто это сильнейший костыль, ради такого плёвого момента, но если не сделать то много хороших идей остануться глючными =(
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.