Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Cámara en 3º persona para un juego de naves

Iniciado por CoLSoN2, 25 de Diciembre de 2002, 12:24:30 AM

« anterior - próximo »

AgeR

                                No solo balanceo... obviamente se puede usar para más efectos, como "andar por las paredes"... Yo y mis explicaciones de estar por casa... XD
Lo mejor es trastear con el vector de marras, no hay nada como una imagen :)                                

Lord Trancos

                                me referia a cuando la nave se inclina para subir o bajar                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

CoLSoN2

                                Si, Lord Trancos, se a que te refieres. Veré lo que puedo hacer =)                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

ElQueSeRompeElOrto

                                hAber ColSon2 ,hace algo mas facil y sencillo:

Agarra la matriz de transformacion de la nave y ubica la camara de esta manera:

Primero la orientamos:
---------------------------
MatrizCamara._11 = MatrizNave._11;
MatrizCamara._21 = MatrizNave._12;
MatrizCamara._31 = MatrizNave._13;

MatrizCamara._12 = MatrizNave._21;
MatrizCamara._22 = MatrizNave._22;
MatrizCamara._32 = MatrizNave._23;

MatrizCamara._13 = MatrizNave._31;
MatrizCamara._23 = MatrizNave._32;
MatrizCamara._33 = MatrizNave._33;

y despues la posicionamos:

Camara.pos.x = MatrizNave._41 + MatrizNave._31 * -fDistancia;
Camara.pos.y = MatrizNave._42 + MatrizNave._32 * -fDistancia;
Camara.pos.z = MatrizNave._43 + MatrizNave._33 * -fDistancia;

fDistancia seria la distancia de la camara a la nave.

la idea de este algoritmo es Copiar la matriz transpuesta de la nave a
la camara y despues posicionarla usando el elemento de la matrizNave
"._31 ,._32 y ._33" , que es un vector cuyo modulo vale 1 y apunta siempre hacia adelante de la camara ,por eso pongo negativo a fDistancia
asi la camara se posa atras , de lo contrario seria adelante .
Te lo describo porque capaz que la pifie escribiendo. pero la idea funciona.

Otra cosa es que la nave estara justo adelante de la camara lo que deverias hacer es esto:

Camara.pos.x = MatrizNave._41 MatrizNave._21 * fElevacion +
+ MatrizNave._31 * -fDistancia;

Camara.pos.y = MatrizNave._42 MatrizNave._21 * fElevacion +
+ MatrizNave._32 * -fDistancia;

Camara.pos.z = MatrizNave._43 MatrizNave._21 * fElevacion +
+ MatrizNave._33 * -fDistancia;

asi la camara esta un poco mas arriba ,igual juga un poco con los elementos de las matrices.
un saludo.                                

ElQueSeRompeElOrto

                                me equiboque en la formula final ,me olbide del mas  + :

Camara.pos.x = MatrizNave._41 + MatrizNave._21 * fElevacion +
+ MatrizNave._31 * -fDistancia;

Camara.pos.y = MatrizNave._42 + MatrizNave._21 * fElevacion +
+ MatrizNave._32 * -fDistancia;

Camara.pos.z = MatrizNave._43 + MatrizNave._21 * fElevacion +
+ MatrizNave._33 * -fDistancia;                                

CoLSoN2

                                voy a probar a ver que tal queda thxx :-)                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.