- это должна быть ломаная линия без самопересечений;
- у нее должны быть параметрами выделены начало и конец;
- можно задавать скорость молнии;
- можно задавать амплитуду - насколько сильно молния уходит от "прямого" маршрута;
- можно задавать визуальные характеристики молнии: цвет, толщина линии и так далее
- да, и чтоб ее можно было "запаузить", то есть сделать так, чтобы след от молнии остался на экране указанное мною время.
Вот примерно это у меня в конце и получилось:
Как решить этот вопрос?
Нулевая мысль: надо загуглить.
В гугле много примеров, советов, много из них полезного, но большинство из них - просто болтовня.
Если нужно что-нибудь что-нибудь молниеподобное, то здесь их много. Только не все они отвечают на вышеописанные требования. Зато можно взять уже готовое и использовать их для себя.
Устал искать, решил взять заготовку и написать сам.
Первая мысль: использовать партиклы.
Как? Непонятно. У кого есть идеи, велком.
Вторая мысль: шейдером.
Сделать в любом редакторе 3d прямую, а потом создавать ее, применив фрагментный шейдер, который будет:
- отрисовывать ее не сразу, а по какому-то времени. Таким образом, мы добьемся эффекта, что молния "бьет", можно управлять скоростью.
- рисовала не прямую, а ломаную в заданной амплитуде. По сути, это просто: амплитуда - это просто абсолютное значение координаты относительно Y, нужно делать кривое зеркало в 1D пространстве.
- ну и цвет - простое умножение на цвет.
К слову сказать, первое место из той ссылки как раз и юзает такой шейдер, но меня он отпугнул своей неуклюжестью и тяжелой отрисовкой.
Уже решение: взять и тупо рисовать.
И на мой взгляд, самое простое и гениальное решение: можно провести какой-нибудь "безбашенный" шатающийся отрезок из точки А в точку B, а в позициях, где он побывал, нарисовать пиксели.
Более того, в Unity уже есть так называемый trail renderer, в нем есть и толщина линии, и материал с нужным мне цветом. По названию понятно, что это штука, которая рисует на позиции, где побывал гейм-объект. Юнитеки будто знали :) То есть вся задача заключалась в том, чтобы создать пустой трансформ в точке А и довести ее до точки В, в update иногда сбивая ей маршрут.
Код слишком простой, поэтому выкладывать его нет смысла. Ну а поиграться можно выше или вот здесь:
Комментариев нет:
Отправить комментарий