Très bon concept même si la caméra aurait mérité un peu de travail pour rendre l'action lisible.
Les mouvements sont un peu saccadés, j'imagine que tu as implémenté les mouvements dans le Update. Si c'est le cas, il aurait mieux fallu que tu utilises FixedUpdate, c'est ce qui est utilisé pour tout ce qui est relatif à la physique.
Enfin, pour le dernier niveau, je te recommande de mettre tes décors en Static (la petite coche en haut de l'Inspector de tes GameObject) et de setter tes Materials en Draw Instanced pour économiser des performances !