Hay una cosa que debes tener clara:
- para especificar una cámara necesitas dar, como mínimo, dos parámetros, por ejemplo dirección y roll o dirección y UP, lo que sea. Esto aparte de su posición, claro.
No puedes pretender que con un solo parámetro la cámara se invente a si misma. Otra cosa es que se asuman cosas, como por ejemplo que la cámara deba estar, como en la realidad, con el vector up mirando hacia arriba (razonablemente).
En el código que has puesto tiene como entradas Center, Eye y U, ese U si es (0,0,1) (suponiendo un sistema de coordenadas con Z hacia "el techo") queda una cámara como la que tú quieres, esto es, F, S y U formarán la base de vectores del sistema de coordenadas de la cámara (el álgebra de la carrera sirve para algo).
En cualquier caso gluLookAt(cam[0], cam[1], cam[2], bicho.pos[0], bicho.pos[1], bicho.pos[2], 0.0f,0.0f,1.0f); te dará lo que necesitas sin complicaciones.