Я смотрел трейлер тизера «Сезоны после осени» и был поражен эффектом, который они используют для перехода между сезонами (около 21-24 секунд):
Уровень искусства, включая фон и платформы переднего плана, меняется с осени цвета сепии на лавандовую зиму с эффектом, распространяющимся наружу от персонажа игрока, как вода, пропитывающая бумагу.
Это выглядит больше, чем просто изменение палитры, так как детали в шаблонах листьев и коры меняются при переходе.
Как я мог добиться эффекта, подобного этому в 2D игре Unity?
Один из способов сделать это - смешать фоны с помощью альфа-карты. Простой подход состоит в том, чтобы визуализировать «задний» (скрытый) фон, а затем «передний» (изначально видимый) фон. Используйте альфа-канал переднего фона или отдельную альфа-текстуру, чтобы управлять прозрачностью переднего фона, как любой прозрачный или полупрозрачный спрайт. Если эта альфа-карта меньше единицы, части заднего фона будут просвечиваться.
Тогда это просто вопрос построения этой альфа-карты в соответствии с желаемым эффектом. В видео, которое вы демонстрируете, похоже, что такая карта была построена с «живописным» подходом. Это может включать случайное размещение кругов с нулевым альфа-каналом (которые отклоняются до 1,0 альфа по их краям). Начните размещать эти круги плотно смещенными вокруг источника раскрытия, и со временем ослабьте уклон, чтобы они распространялись наружу. Делая это, вы, вероятно, захотите расширить радиус окружностей.
Вы можете настроить этот подход так, как вам нужно, чтобы адаптировать эффект к вашим желаниям; например, простые круги могут выглядеть слишком «пятнистыми», и вместо этого вы можете вместо этого случайно выбрать случайно выбранный предварительно созданный «мазок кисти» в маску. Даже случайное размещение само по себе может выглядеть слишком беспорядочным, и вместо этого вы можете выбрать штампование альфа-маски вдоль предварительно созданной кривой или сплайна, чтобы выделить определенный стиль.
К сожалению, я набирал очень похожий ответ в то же время, как вы, кажется. ^ _ ^; Извиняюсь за перекрытие.
DMGregory
Спасибо за ответ, я попробую это и вернусь к вам, это работает! Еще раз
спасибо
Вы также можете нарисовать вручную четыре или пять переходов и просто немного перемешать вращение. Я сомневаюсь, что кому-то будет все равно, когда в таком быстром и наихудшем сценарии вы можете играть с вращением и горизонтальным масштабированием.
Фонд Моника иск
Извините, что беспокою снова, но мне было интересно, можете ли вы уточнить это подробнее, так как я тестировал его самостоятельно, но он был немного неуклюжим, и я тоже не мог сделать его прозрачным. Извините еще раз за беспокойство и спасибо!
Джесса Стоун
Неожиданно кажется, что многие вещи могут быть не правы там; Я не могу помочь вам отладить его здесь, но, возможно, кто-то в чате разработки игр сможет это сделать, и вы иногда можете найти меня там же.
7
Я бы подошел к этому, используя собственный шейдер на своих SpriteRenderers, который принимает две текстуры, по одной для каждой версии, между которой вы хотите перейти.
(Даже если использовать этот эффект для перехода между более чем двумя состояниями, я все же попытался бы структурировать игру, поэтому нам нужно только два для рендеринга одновременно: старое состояние и следующее состояние. Мы позволим этому переходу играть до завершения, прежде чем мы позволим игроку инициировать переход в третье состояние, после чего мы можем заменить наше предыдущее «старое» состояние, так как оно больше не видно)
Этот шейдер будет затухать между двумя текстурами, используя третью одноканальную текстуру в качестве маски для эффекта (например, черный = 100% старое состояние, серый = 50/50 смесь, белый = 100% новое состояние). Я бы сопоставил эту текстуру маски в пространстве экрана.
Затем я установил бы вторую камеру для рендеринга в RenderTexture, чтобы сгенерировать эту маску. Эта вторая камера двигалась бы вместе с моей основной камерой и соответствовала бы размеру FoV / орфографии, поэтому любая анимация, на мой взгляд, применима как к миру, так и последовательно отображала маску. Эта камера будет отображаться раньше, чем моя основная камера, и будет настроена на просмотр только контента на специально обозначенном «раскрывающемся» слое. В примере с видео, похоже, что они используют систему частиц, чтобы разделить коллекцию маленьких облачных форм на эту раскрывающуюся текстуру, которая расширяется с течением времени, давая переходу органично выглядящий край распространения.
Я бы подошел к этому, используя собственный шейдер на своих SpriteRenderers, который принимает две текстуры, по одной для каждой версии, между которой вы хотите перейти.
(Даже если использовать этот эффект для перехода между более чем двумя состояниями, я все же попытался бы структурировать игру, поэтому нам нужно только два для рендеринга одновременно: старое состояние и следующее состояние. Мы позволим этому переходу играть до завершения, прежде чем мы позволим игроку инициировать переход в третье состояние, после чего мы можем заменить наше предыдущее «старое» состояние, так как оно больше не видно)
Этот шейдер будет затухать между двумя текстурами, используя третью одноканальную текстуру в качестве маски для эффекта (например, черный = 100% старое состояние, серый = 50/50 смесь, белый = 100% новое состояние). Я бы сопоставил эту текстуру маски в пространстве экрана.
Затем я установил бы вторую камеру для рендеринга в RenderTexture, чтобы сгенерировать эту маску. Эта вторая камера двигалась бы вместе с моей основной камерой и соответствовала бы размеру FoV / орфографии, поэтому любая анимация, на мой взгляд, применима как к миру, так и последовательно отображала маску. Эта камера будет отображаться раньше, чем моя основная камера, и будет настроена на просмотр только контента на специально обозначенном «раскрывающемся» слое. В примере с видео, похоже, что они используют систему частиц, чтобы разделить коллекцию маленьких облачных форм на эту раскрывающуюся текстуру, которая расширяется с течением времени, давая переходу органично выглядящий край распространения.
источник