Bonjour,
J'ai un probleme assez dur a expliquer, désoler si vous avez du mal a comprendre.

Je suis en train de créée mon premier jeu et j'en suis a l'AI (modele en MD2)
j'ai donc crée un tableau de struct conntenant les infos des modeles,ça c'est ok il s'affiche tous ... mais lorsque que je met un peut trop de fonction comme Distance() (3DMATH.cpp) j'ai des ennemis qui disparaisent,
quand j'envele un distance() , un ennemi reveint ! pourtant il doit avoir seulement 2 ou 3 Distance() !
voila les fonctions:
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
21
 
void Cours_ennemie(float x, float z, int IdEnnemi)
{
CVector3 Tempo;
Tempo.x=x;
Tempo.z=z;
if(Distance(Tempo, ennemi[IdEnnemi].Pos)>20.5)
{
ennemiMDL[IdEnnemi]->setAnim(animList[13]);
CVector3 go_to2 = g_Camera.ObjetGoTo(x, z, ennemi[IdEnnemi].Pos.x,ennemi[IdEnnemi].Pos.y,ennemi[IdEnnemi].Pos.z);
ennemi[IdEnnemi].Pos.x+=go_to2.x*2.0;
ennemi[IdEnnemi].Pos.y=15.5;
ennemi[IdEnnemi].Pos.z+=go_to2.z*2.0; 
ennemi[IdEnnemi].angle=trouver_angle(x, z, IdEnnemi)+90;
}
else
{
ennemiMDL[IdEnnemi]->setAnim(animList[15]);
ennemi[IdEnnemi].angle=ennemi[IdEnnemi].angle_poste;
}
}
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 Ennemi()
{
 for (int en = 0; en < nombre_ennemire; en++)
 {
glPushMatrix();
 
double distance = Distance(ennemi[en].Pos, g_Camera.m_vPosition);
 
if(!ennemi[en].Alerte) Cours_ennemie(ennemi[en].Poste.x, ennemi[en].Poste.z, en);
if(distance<400)
{ 
ennemi[en].Alerte=true; 
if(distance<300) ennemi[en].onFire=true; else ennemi[en].onFire=false;
}
ennemiMDL[en]->drawPlayerItp(bAnimated,static_cast<Md2Object::Md2RenderMode>(renderMode),
ennemi[en].Pos.x,ennemi[en].Pos.y,ennemi[en].Pos.z, 0.0,0.0,0.0,ennemi[en].angle);
glPopMatrix();
 }
}
et la boucle 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
15
16
17
18
19
 
static void
draw3D ()
{
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glLoadIdentity ();
 
  g_Camera.CheckCameraCollision(g_vWorld, g_NumberOfVerts);
  g_Camera.Look(); 
  g_Camera.Update();
  glEnable (GL_DEPTH_TEST);
  glCallList(cube); // le décors
 
 
Ennemi();
  glDisable (GL_LIGHTING);
  glDisable (GL_TEXTURE_2D);
  glDisable (GL_DEPTH_TEST);
}
dans cette exemple au lieu d'avoir 3 ennemies j'en ai qu'un seul

merci de votre aide !

ps : glut , c++