Bonsoir,

J'ai commencer il y a quelques semaines un projet de bomberman réalisé en C++ avec openGL, J'ai mis en place une caméra fixe au début du projet, et au fur et à mesure de l'avancé de mon travail j'ai voulu déplacer la caméra selon la position du joueur et c'est la que je sollicite votre aide.

Voici mon code de base :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  glTranslatef(0.0f, 0.0f, 0.0f);
  gluPerspective(20.0f, 960.0f/540.0f, 1.0f, 10000.0f);
 
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
  gluLookAt(position_.x, position_.y, position_.z, //position_.x = 0, position_.y = 0, position_.z, = 335
            0.0, 0.0f, -1.0f,
            0.0f, 1.0f, 0.0f);
 
  glEnable(GL_DEPTH_TEST);
  glDepthFunc(GL_LEQUAL);
Je change donc la position (position_.x,position_.y) de la caméra par les positions actuelles du joueur. Sauf que lorsque je dirige mon personnage vers la droite il se passe ceci :

avant de bouger :



apres avoir bouger



En gros on dirait que la camera fait une rotation au lieu de suivre les positions du joueur, du côté du joueur le code se passe ainsi :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
this->core->changePosCamera(this->cam_x + offset_y, this->cam_y, this->cam_z + offset_x);
Ce qui incrémente les position "position_.x" par la position "offset_y" de même pour la "position_.y".

Voila j'espère avoir été assez clair, merci d'avance de vos réponses en tout cas.