Такую анимацию, как на видео, легко сделать системой частиц. Кроме одного момента: стандартными средствами Unity нельзя задать конкретный Sprite конкретной частице. C помощью
ParticleSystem.EmitParams можно указать положение, размер, вектор движения, время жизни и ещё несколько параметров, но не конкретный Sprite.Но если очень нужно, то можно использовать костыль. Мы будем управлять цветом частицы, а с помощью шейдера преобразовывать цвет в UV конкретного спрайта в текстуре.
Для простоты я взял квадратную текстуру с 16 спрайтами (по 4 в строке и 4 в колонке). В Unity нарезал её на спрайты. И делаю emit частицам следующим образом:
var dimensions = 4;
var sprite = ...
particleSystem.Emit(new ParticleSystem.EmitParams
{
position = ...,
startSize = sprite.texture.width / sprite.pixelsPerUnit / dimensions,
startColor = new Color(sprite.rect.x / (sprite.rect.width * dimensions),
sprite.rect.y / (sprite.rect.height * dimensions), 0, 1),
velocity = ...
}, 1);
Далее шейдером перевожу r и g компоненты цвета в uv координаты текстуры. Шейдер и пример текстуры ищите в комментах к этому посту. Там же можно задать мне вопрос, если что-то осталось не понятно.
За этот трюк безмерно благодарен зрителю моих стримов, который, если я правильно помню, предпочитает оставаться анонимом.
#тайные_знания