goutbouyo
Messages postés429Date d'inscriptionmardi 6 juillet 2004StatutMembreDernière intervention12 janvier 2008
-
20 nov. 2004 à 22:22
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 2010
-
24 nov. 2004 à 18:14
Salut,
Salut,
Je veut faire une fonction réseau sur mon jeu, donc il faut que je représente les persos ennemies.
Pour cela, je prends les coordonnés et jusque là tout va bien.
Mais il faut aussi je tienne compte de leur direction de vision, et pour celà je fait comme ça :
double aX=g_Camera.m_vView.x-g_Camera.m_vPosition.x;
double aZ=g_Camera.m_vView.z-g_Camera.m_vPosition.z;
double angle = atan(aZ/aX);
int angle2=(180*angle)/PI;
glPushMatrix();
glRotatef(angle2,0,1,0);
Z=strtol(ClientZ,NULL,0);
X=strtol(ClientX,NULL,0);
//je fais un test avec un carré pour l'instant
glBegin(GL_QUADS);
glTexCoord2i(0, 1); glVertex3f(X-10, 1,Z);
glTexCoord2i(0, 0); glVertex3f(X-10, 8,Z);
glTexCoord2i(1, 0); glVertex3f(X+10, 8,Z);
glTexCoord2i(1, 1); glVertex3f(X+10, 1,Z);
glEnd();
glPopMatrix();
Donc voila, ça marche bien, mais le problème c'est que la rotation se fait par rapport à l'origine du repère(donc ici 0) mais si mon perso ennemie est pas en 0, ça ne va plus du tout !!!
Comment faire pour changer les origines du repères SVP ???
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 21 nov. 2004 à 16:40
une fonction réseau!!!!
nan mais goutbouyo faut pas avoir les yeux plus gros que la tete si j'ose dire.
bon dee toute facon pour les rotations, il faut d'abord que tu translates ton perso en 0,0,0, puis que tu fasses ta rotation, puis que tu le refoutes a sa pos d'origine.
je ne comprend pas bien ce que ton code fait, ni le sens général de tout ce qui ce trouve avant le bout de code.
ou alors, si j'ai bien compris, ce n'est pas sur, mets ton rotate apres le translate.
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 21 nov. 2004 à 17:59
ha oui ca c'est embetant ;)
mais qd meme ton trtuc m'embete.
Tu devrais faire ca:
glRotatef(perso.angle,0,1,0);
pour choisir sa direction;
glTranslatef(perso.pos.x,perso.pos.y,perso.pos.z);
pour sa position
et puis dessiner le perso en (0,0,0).
sinon tu vas pas t'en sortir, peut etrre que ca parche avec uun carré mais avec un md2 tu va galérer je pense.
goutbouyo
Messages postés429Date d'inscriptionmardi 6 juillet 2004StatutMembreDernière intervention12 janvier 2008 21 nov. 2004 à 23:17
Qu'est ce qui était déjà fais ???
T'aurais pas une idée pour les animations de MD2 ???
En fait si le perso ennemi bouge je le fais courrir et s'il bouge pas je le rend immobile.
J'ai essayer d'enregistrer à chaque affichage la valeur X et Z du l'ennemie dans XOld et ZOld, ensuite si XOld=X alors ça veut idre qu'il bouge pas, donc je met l'anim immobile.
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 23 nov. 2004 à 20:06
Aie!
"si XOld=X alors ça veut idre qu'il bouge pas, donc je met l'anim immobile."
ben non!
tes persos décrivent un carré, donc sur 2 des 4 cotés il Xold==X. il faut faire if(Xold!=X || Yold!=Y) Moveperso();
goutbouyo
Messages postés429Date d'inscriptionmardi 6 juillet 2004StatutMembreDernière intervention12 janvier 2008 24 nov. 2004 à 15:20
EN fait j'ai réussi.
Mais comme j'envois les donnée sur le réseau, et que je les envoie pas à chaque frame il fallait mettre un petit écart pour que ça marche.