Oh! One more thing I wanted to add!
I see some comments about using procedural generation instead of handcrafted levels like you made. Now, I don't necessarily disagree with this. However, I do feel like handcrafting the levels like you have done helped match the flow of the game. For example, on Level 3 when the camera is moving at nearly the same speed as the character, I feel that procedural generation could cause some confusion.
Running from the screen, knowing that one mistake would spell my doom made for intense gameplay! If one platform is misplaced by an algorithm that isn't finely tuned, it could be very frustrating. I think procedural generation is great for more slow-paced/exploration based games, but in games where timing is everything and bouncing perfectly off a platform is important, I think what you did made it much more satisfying.