вам придется разобраться с Quaternion, вместо копипасты((
https://docs.unity3d.com/ScriptReference/Quaternio...
тогда появится понимание как "добавить 90 градусов вокруг оси N к текущему повороту"
дело в этих двух строчках
Quaternion to = transform.rotation;
to *= Quaternion.Euler( axis * angle );
не помню как делал для себя такой же один в один куб)) попробуйте умножение в другом порядке (кватернионам важно, что на что умножать))
to = Quaternion.Euler( axis * angle ) * to;
проверил. вам точно нужен именно глобальный вектор поворота, другой порядок умножения)) в школе врали что не влияет))
плюс в конце цикла анимации сделайте
transform.rotation = to;
чтоб не было углов по 88,9 и так далее, а то лерп не докручивает каждый раз по чуть чуть и накапливается))