Buenas Rubén, he intentado mirar tu.blend a ver si encontraba el problema, pero está todo muy lioso. Sobre todo, porque no está todo lo bien implementado que podría, a mi parecer. Usas demasiados logics para una acción que se puede implementar perfectamente con un always sensor, un mouse sensor, un script de Python elaborado y dos motion actuadores (como mucho tres) para el movimiento me refiero. Además, que sería conveniente, aunque tus scripts fuesen cortos, que añadieses comentarios a las funciones y declaraciones, para de una sola mirada, puedas (y puedan) tener claro que es cada cosa y lo que se supone que hace. Es una recomendación más que nada porque cuando se te vayan sumando más y más scripts y elementos a implementar vas a tener mucho código que mirar si algo no va bien.
Lo que intentas hacer es una combinación de dos scripts que están en la
api de Blender, que son
rasterizer para el movimiento de una cámara u objeto con el ratón. (
te dejo un hilo en el que lo explico con detalle). Y
el otro es un script de teclado, para que no tengas que añadir un keyboard cada vez que quieres usar una tecla en el BGE, (tienes tres versiones diferentes). Combinando todo lo anterior con unos cuantos if y con los motions que te he dicho lo puedes implementar perfectamente y sobre todo que dicha implementación será mucho más eficiente y limpia que la que tienes ahora. Un saludo.