Recuerdo haber realizado algo como pides, y lo que hice fue un path para el movimiento, y lo que hacia es que con la teclas Left el speed del path era -3 y con la tecla Right era 3. asi el path se movia por un camino circular osea en circulos, lo demas es la camara la cual debe enfocar en 45º
Claro recuerdo que luego lo elimine y en el actual engine no existe, por que cree un segundo piso y unas escaleras para el juego que estoy creando en 3D.
Otra cosa que tendrías que tomar las comparaciones del valor Z
es decir yo declaro el valor Z, y digamos alguno de los personajes esta en el segundo piso y el otro en el primero, pero estan uno frente del otro claro separados por un piso, si no haces comparaciones del valor Z al dispararle este le pegara al del segundo piso como si lo tuviera de frente.
para eso creas comparaciones tales como: if (Cubix.z+1 > z and Cubix.z-1 < z) //claro podria colocar if Cubix.z = z //pero resulta que funciona mejor de la manera que coloque ademas de que una Bala no debe impactar en el centro para herir. asi que la comparacion podria colocarla en +2 +3 +4 etc...
Lo que digo es que tienes que tomar en cuenta factores como la proyección de la cámara y el valor Z.
Usas este codigo para la camara, te lo dejo sacado del manual.
d3d_set_projection_ext(xfrom,yfrom,zfrom,xto,yto,zto,xup,yup,zup,
angle,aspect,znear,zfar) Una versión extendida de esta función en la cual además especificas el ángulo definiendo el campo de vista, el radio de aspecto entre el tamaño vertical y horizontal de la vista, y los planos cercanos y lejanos de recorte.
Los parámetros adicionales trabajan como sigue. Si especificaste la posición de la cámara, el punto a mirar, y el vector up, puedes todavía cambiar qué tan unidos están los lentes de la cámara. Esto es conocido como el campo de vista. Un valor razonable es 45 grados y esto es el valor por defecto tomado. Pero puedes cambiar esto si gustas. Después puedes especificar la relación de aspecto entre la proyección horizontal y vertical. Normalmente quieres usar el mismo como la radio de aspecto del cuarto o la vista, p.ej. 640/480. Finalmente puedes indicar los planos de recorte. Los objetos que son más cercanos que znear a la cámara no son dibujados. Similar para objetos más lejos que zfar. Puede ser importante poner estos parámetros a valores razonables porque ellos también influyen en la precisión de las comparaciones de z. Si usted hace el rango demasiado grande la precisión empeora. Por defecto usamos 1 y 32000. ¡znear debe ser más grande que 0!
angle es el que reformas-.
Si quieres hacer juegos 3D renderisados y con mejores terrenos aca te dejo un post donde econtraras un programa para hacer juegos con calidad profesional.
Click Aqui