думал вынести в ответ или нет.
но кватернионы никто так не задает))
в этом и ошибка.
transform.rotation = кватернион тут все хорошо.
а вот требуемый поворот лучше все же задать иначе.
к примеру - добавить к текущему повороту 90 градусов. (надеюсь очевидно что задавать цель поворота надо единожды, а не каждый апдеит)
Quaternion targetRotation = transform.rotation * Quaternion.Euler(0, 90, 0);
или в вашем случае просто через Quaternion.Euler задать требуемый поворот. но учесть что это будет локальный поворот.
вообще про кватернионы бы вам почитать. что там и порядок умножения важен.
и что они умножаются, а не суммируются.
почитайте про них статьи на том же хабре. там была парочка поясняющих про тангаж, рысканье и тп. и аналогии с кватернионами чтоб хоть как то их понять))