Анимация с помощью шейдера в Unity
705705

Можешь подробней рассказать о том, как подружил локальные и мировые координаты?

Написал скрипт, который дергает из системы частиц velocity вектор (по сути forward-вектор), далее с его помощью и глобальный Vector3.up через cross product получаем сначала локальный right-вектор, а потом локальный up-вектор для каждой частицы. Затем эти 2 локальных вектора передаем обратно в систему частиц через CustomData и в шейдере уже относительно этих новых осей считаем смещение вертексов.