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

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

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

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