Deplacement d'un personnage en OpenGL

Signaler
Messages postés
19
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
14 juin 2006
-
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
-
Bonjour a tous,

J'ai parcourus les sources de ce site mais je n'ai pas concretement trouvé reponse a ma question, en fait j'ai creer un personnage type "Tomb Rider" et je voufrai le faire evoluer sur dans l'espace, pour cela j'applique une rotation a mon personnage, puis une translation sur mon terrain, mais je crois que je me suis embrouiller avec les cosinus et sinus. Enen fait je fait un

glRotatef(tourne,0.0, 0.0, 0.0) sur le perso
et un
glTranslatef(sin(tourne*Pi/180)*avance, cos(tourne*Pi/180)*avance,0.0); sur le terrain, mais jai l'impression d'avoir une rotation suivit d'une translation alors que mon terrain et mon perso sont isole par des push et popmatrix.

En fait si vous savez comment faire sa srerais cool, ou meme une redidirection a suivre que je me creuse la tete mais dans la bonne direction :p.

Ganjy vous dit merci :). Et bonne programmation.

3 réponses

Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
glRotatef(tourne,0.0, 0.0, 0.0) deja là faudrai preciser l'axe de rotation non ?

Ensuite et à ce que j'ai compris tu veux avancer de "avance", mais tu viens de faire la rotation alors je vois pas l'utilite du cos et sin dans le glTranslatef.

Et enfin, vu que tu ne te deplaces pas suivant les Z (0.0 dans glTranslatef) je pense que ton axe de rotation dans glRotatef c'est ( 0.0,0.0,1.0 ). Puis admettons que t'avances sur les X glTranslatef(avance,0.0,0.0) ou glTranslatef(0.0,avance,0.0) si Y sens d'avancement.

KeniiyK.
Messages postés
230
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
4 août 2005

ca va pas marcher le seul moyen de faire un déplacement d'un perso que le
joueur peut faire tourner c'est :
double x,y; //Coordonnées
double angle; //Angle vers lequel est tourné

//Dans draw
glPushMatrix();
glTranslated(x,y,0);
glRotated(angle,0,0,1);
//Dessin

et dans la fonction qui gère les touches et l'avancement tu dois utilisé les
fonctions trigonométriques
Sinon t'as pas trouvé de source t'as mal cherché, j'ai eu le meme problème
que toi et je me suis servi de Labyrinthe mania de gagah1 mais ya aussi plein
d'autres sources de labyrinthe dans le site
a+
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
Ben si ca peut marche, tout depend du type de transformation qu'il veut faire et en règle générale on fait la rotation puis la translation.

Clercq essaye aussi de faire un glLoadIdentity entre le glPushMatrix et le glRotatef (je sais plus a quoi son initialise les matrices...)