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 :
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 :
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);
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 :
Ce qui incrémente les position "position_.x" par la position "offset_y" de même pour la "position_.y".
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);
Voila j'espère avoir été assez clair, merci d'avance de vos réponses en tout cas.
Partager