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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
28
и ему че для всех возможных юнитов и их путей так делать? ятп тут глобально решить надо для неограниченного кол-ва вариантов
Да тут всего два триггера.
С: Отдан приказ в точку
У: Приказ такой-то, и точка приказа там-то, и приказанный юнит находится там-то
Д: Отдать приказ туда-то

С: Юнит входит в такю-то область.
Д: Отдать приказ Идти туда-то.

Несколько таких проблем - небольшое бд областей только и всего. Я всё же думаю, что это лучше дублированию юнитов для морфа.

Всё зависит от количества таких юнитов. Если их парочка, то такая система не нужна, морфом проще. Если же их много, наоборот, система будет проще.

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