ДевЛог #18 - движение, свет и тень

Эту проблему я пытался побороть два дня, но я еще не знал что надо всего лишь...

... надо было прошерстить инстансы ассетов. Сейчас поясню.

Плавное меремещение

Цель была сделать плавное перемещение игрока по поверхности так, чтобы танчик наклонялся в зависимости от рельефа, но что-то пошло не так. И вроде бы код верный, но результат дурной. Даже когда ездить стало вроде бы нормально, то башню продолжало колбасить также, как и на видео.

Итогом расследования оказалось то, что почему-то скрипт башни наложен аж на 2 объекта, чего быть не должно было, при этом в префабе всё отлично. И решить это удалось только удалением игрока с карты и выставлением заново вместе со всеми связями. До этого даже убирание переопределений, которые были на инстансе не помогало, ровно как и чистка папки Library. Как итог плавного движения я достиг, но на пару дней позже, чем мог бы из-за подобного поведения unity.

При этом я уже был готов перейти на rigidbody, для достижения нужного эффекта, но он давал примерно те же глюки с вращением модельки как угодно вокруг непонятно чего.

Результат корректной работы скриптов плавного перемещения.

Про свет и тень

После смены модельки на подобие ховертанка (по плану там всё еще что-то вроде меха, или силовой брони должно быть) и добавления ему огоньков появилась проблема с тем, что юнити начала отключать часть источников света, которые не помечены как важные. Проблема довольно ожидаемая, так как от каждого источника считать блики на поверхностях, тени - очень накладно.

С точки зрения шейдеров это означает что нужно в каждый материал передавать все ближайшие источники света (а они лимитированы), чтобы посчитать освещение каждого пикселя.

На этом видео видно, как то один, то другой движок гаснут на доли секунды, чтобы дать посветить другим источникам света.

Решить сию проблему мне виделось только двумя путями. Или уменьшение количества источников света, то есть оставить тем же пулькам просто свечение, без источника света. Либо переходить на отложенное освещение.

Отложенное освещение позволяет накладывать сколько угодно источников освещения на каждый пиксель, так как расчёт уже идёт после построения всей сцены. Да, качество при этом несколько ухудшается, зато с производительностью и ограничениями количества источников света проблем нет.

После перехода на отложенное освещение пришлось подкручивать настройки освещения в целом, зато добавив свет в эффект врзрыва удалось достичь еще более насыщенной картинки в темное время суток.

Тут уже всё на отложенном освещении работает. Каждая пулька, взрыв, движок на танке - всё отдельные источники света.

PS

Как обычно жду любых комментариев, предложений и замечаний тут и в телеграм-канале. Спасибо за ваше внимание!

2727
Начать дискуссию