Hello,
I'm doing some tests with dark gdk.
The problem is that I can not make the camera follow the character continuously from the same angle (from behind).
Is that the problem is in the corner but after several prubas not know what else to do, I pass the code.
#include "DarkGDK.h"
class personaje
{
private:
int movimiento;
int giro;
int play;
bool mover;
bool girar;
bool animar;
vector3 posicion;
vector3 angulo;
public:
personaje();
void crearCamara();
void girarIzquierda();
void girarDerecha();
void moverAlante();
void moverAtras();
void animacionPersonaje();
};
#include "Personaje.h"
personaje::personaje()
{
dbPositionMouse(dbScreenWidth()/2, dbScreenHeight()/2);
giro = 0;
movimiento = 0;
play = 300;
mover = false;
girar = false;
animar = false;
dbLoadObject("colo.x", 5);
dbPositionObject(5, 0.0, 0.0, 0.0);
dbRotateObject(5, 0.0, -180.0, 0.0);
}
void personaje::crearCamara()
{
posicion.x = dbObjectPositionX(5);
posicion.y = dbObjectPositionY(5);
posicion.z = dbObjectPositionZ(5);
angulo.x = dbObjectAngleX(5);
angulo.y = dbObjectAngleY(5);
angulo.z = dbObjectAngleZ(5);
dbSetCameraToFollow(0,posicion.x, posicion.y, posicion.z, -angulo.y *2, 200.0, 100.0, 14.0, 0);
}
void personaje::moverAlante()
{
if(dbUpKey() == 1)
{
dbMoveObject(5, -4);
animar = true;
}
}
void personaje::moverAtras()
{
if(dbDownKey() == 1)
{
dbMoveObject(5, 4);
animar = true;
}
}
void personaje::girarIzquierda()
{
if(dbLeftKey() == 1)
{
giro = giro -2;
dbRotateObject(5, 0, giro, 0);
animar = true;
}
}
void personaje::girarDerecha()
{
if(dbRightKey() == 1)
{
giro = giro +2;
dbRotateObject(5, 0, giro, 0);
animar = true;
}
}
void personaje::animacionPersonaje()
{
if(animar == false)
{
dbLoopObject(5,1740, 1764);
}
if(animar)
{
play ++;
if(play == 318)
{
play = 300;
}
dbPlayObject(5,play);
animar = false;
}
}
// Dark GDK - The Game Creators - www.thegamecreators.com
// Ejemplo6 (capítulo 23)
#include "DarkGDK.h"
#include "Personaje.h"
// punto de entrada a la aplicación
void DarkGDK ( void )
{
dbSyncOn ( );
dbSyncRate ( 30 );
dbRandomize ( dbTimer ( ) );
// cambio de carpeta vigente
// en la carpeta media está los
// archivos de los objetos 3D
SetCurrentDirectory ( "media" );
personaje p;
dbSetAmbientLight(50);
while ( LoopGDK ( ) )
{
p.crearCamara();
p.moverAlante();
p.moverAtras();
p.girarDerecha();
p.girarIzquierda();
p.animacionPersonaje();
// actualizar la interfaz
dbSync ( );
}
// volver a Windows
return;
}
Excuse my English.
thanks.
Caza