Please look at this page for a moment and see how to post code nicely on the forums: Using code tags properly
Okay, so I stopped reading your code after a moment, when I saw at least 1 main issue.
In your coroutine, you are loop 10 times in one go. You should insert a “yield return null” inside the loop, to allow it to yield until the next frame.
Right now you’re doing 10 frames’ worth of movement in 1 frame.
Oh my… now, I read the rest of your post before I hit submit. Okay… I would suggest that you remove the code you have in Update(). Instead, at the end of each coroutine, add StartCoroutine(TheOtherRoutine());
Replacing that, obviously, with the right method name
The reason for that, by the way, is that right now you’re beginning a new coroutine every frame, despite the routine taking multiple frames to run… and it’s not what you want =)