Salut à tous.
Je suis actuellement en train de développer un "minecraft-like" pour un projet scolaire.
J'ai donc fait le personnage (6 pavés), et je le fait déplacer dans l'espace.
Le problème, c'est que mon personnage ne tourne toujours qu'autour du repère d'origine, au lieu de tourner autour de lui même.
Voici le code que j'utilise pour générer le personnage :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 void dessinerPerso() { //BODY ################################### glRotated(angleBody,0,1,0); dessineCorps(DIM1,DIM1*1.5,DIM1/2); //HEAD ################################### glPushMatrix(); glTranslated(0,DIM1,0); dessineTete(DIM1,DIM1,DIM1); glPopMatrix(); //RIGHT ARM ################################### glPushMatrix(); glTranslated(-DIM1/2,0,0); glRotated(angleRA,1,0,0); dessineBras(DIM1/2,DIM1*1.5,DIM1/2,1); glPopMatrix(); //LEFT ARM ################################### glPushMatrix(); glTranslated(DIM1,0,0); glRotated(angleLA,1,0,0); dessineBras(DIM1/2,DIM1*1.5,DIM1/2,0); glPopMatrix(); //RIGHT LEG ################################### glPushMatrix(); glTranslated(0,-1.5*DIM1,0); glRotated(angleRL,1,0,0); dessineJambe(DIM1/2,DIM1*1.5,DIM1/2,1); glPopMatrix(); //LEFT LEG ################################### glPushMatrix(); glTranslated(DIM1/2+1,-1.5*DIM1,0); glRotated(angleLL,1,0,0); dessineJambe(DIM1/2,DIM1*1.5,DIM1/2,0); glPopMatrix(); }
Je ne vous détaille pas les fonctions dessiner...(), elles génèrent juste un pavé avec la texture appropriée.
Et voici ma fonction principale :
Si quelqu'un à une solution, je suis preneur ;)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 void Dessiner() { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity( ); camera->look(); dessinerRepere(200); //Génération de la Map glPushMatrix(); glTranslated(-TAILLE_MAP/2,TAILLE_MAP,0); dessinePiece(TAILLE_MAP,TAILLE_MAP,TAILLE_MAP); glPopMatrix(); //Déplacement du peronnage double x = axe * sin(angleBody * M_PI / 180.0); double z = axe * cos(angleBody * M_PI / 180.0); glTranslated(x,DIM1*3,z); //Génération du personnage dessinerPerso(); glFlush(); SDL_GL_SwapBuffers(); }