Bonjour,

Voici ce que j'ai : http://zenux.free.fr/camera.jpg
Donc j'ai mon nain qui est positionné en 0.0, -1.0, -5.0.
Et le sol qui est en y=-1.0

J'aimerai pouvoir déplacer le nain avec les flèches directionnelles. Donc quand j'appuie sur la touche directionnelle de gauche le nain tourne à gauche. Ensuite quand j'appuie sur la flèche pour avancer, le nain devrait avancer face à lui. (En fait le nain ne doit pas bouger mais c'est le sol qui bouge pour faire croire que le nain se déplace).

Je ne sais pas dutout comment faire, si l'utilisateur fait une rotation et puis avance, c'est tout à fait différent d'avancer et puis de faire une rotation...et ça m'ennuie bien

Voici ma fonction draw:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void draw()
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glLoadIdentity(); //Faut-il le mettre ou pas (tout dépend de l'algo se trouvant dans la class camera) ?
 
	cam->placeCamera();
 
	//Affichage du sol ici.
 
	glPushMatrix();
	glLoadIdentity();
	//Affichage du nain ici en 0.0, -1.0, -5.0
	glPopMatrix();
}
Et voici ce qui se trouve dans la fonction membre placeCamera de la classe camera:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void camera::placeCamera(void)
{
	if(bTurnLeft==true || bTurnRight==true)
	{
		rotY+=degreeRotY;
	}
 
	if(bMoveFront==true || bMoveBack==true)
	{
		frontBack+=distFrontBack;
	}
 
	//TRANSLATION :
	render::translate(0.0, 0.0, frontBack);
 
	//ROTATION Y :
	render::translate(0.0, 0.0, -5.0);
	render::rotateY(rotY);
	render::translate(0.0, 0.0, 5.0);
}
Le 2 translates entre le rotate c'est pour que la rotation s'effectue sous les pied du nain et non en z=0.0

Ce code fait en peu n'importe quoi...
-Si je fait une rotation avec une des flèches directionnelles : ça fonctionne.
-Si j'avance : ça fonctionne.
-Si je refait une rotation après m'être avancé : la rotation ne s'effectue pas en dessous des pied du nain mais tout à fait autre part.

Description des variables:
bTurnLeft : est à true quand la flèche directionnelle est appuyé (pareil pour les autres variables commençant par "b")
degreeRotY : contient le nombre de degrée de rotation à effectuer.
distFrontBack : contient la distance à avancer quand on appuie sur les flèches directionnelles haut-bas.

Merci d'avance...