Я бы подошел к этому, используя собственный шейдер на своих SpriteRenderers, который принимает две текстуры, по одной для каждой версии, между которой вы хотите перейти.
(Даже если использовать этот эффект для перехода между более чем двумя состояниями, я все же попытался бы структурировать игру, поэтому нам нужно только два для рендеринга одновременно: старое состояние и следующее состояние. Мы позволим этому переходу играть до завершения, прежде чем мы позволим игроку инициировать переход в третье состояние, после чего мы можем заменить наше предыдущее «старое» состояние, так как оно больше не видно)
Этот шейдер будет затухать между двумя текстурами, используя третью одноканальную текстуру в качестве маски для эффекта (например, черный = 100% старое состояние, серый = 50/50 смесь, белый = 100% новое состояние). Я бы сопоставил эту текстуру маски в пространстве экрана.
Затем я установил бы вторую камеру для рендеринга в RenderTexture, чтобы сгенерировать эту маску. Эта вторая камера двигалась бы вместе с моей основной камерой и соответствовала бы размеру FoV / орфографии, поэтому любая анимация, на мой взгляд, применима как к миру, так и последовательно отображала маску. Эта камера будет отображаться раньше, чем моя основная камера, и будет настроена на просмотр только контента на специально обозначенном «раскрывающемся» слое. В примере с видео, похоже, что они используют систему частиц, чтобы разделить коллекцию маленьких облачных форм на эту раскрывающуюся текстуру, которая расширяется с течением времени, давая переходу органично выглядящий край распространения.