Several First-Person camera pitfalls (speed and angle) [jME3]

As for the second one the only simple way I found to solve the problem was doing the following:

public void simpleUpdate(float tpf) {
if(cam.getUp().y < 0)
{
cam.lookAtDirection( new Vector3f(0,cam.getDirection().y,0),new Vector3f(cam.getUp().x,0, cam.getUp().z));
}
}

Once again I don’t know how efficient this is.