#1 

08-10-2008 17:33:46

epsilon99
Membres
Date d'inscription:
Messages: 7
IP: 86.193.118.179
Courriel

Bonjour,
Je suis en train de coder un FPS
Je voudrais déplacé les ennemis en direction de la camera lorsqu'il me voit.
Seulement il ne se déplace que sur les Z et l'animation n'est présente que lorsque le modèle est a l'arret .

line.setLine( map_enemi[vecteur_enemi[i]]->return_node()->getPosition(), camera->getPosition() );
if ( !scenegraph->getSceneCollisionManager()->getCollisionPoint(
               line, metaSelectorSol, end, triangle))
				{
					//il y a un mur entre les 2
				
					map_enemi[vecteur_enemi[i]]->return_node()->setMD2Animation(EMAT_RUN );

					double vitesse = 0.05;
					
					if(map_enemi[vecteur_enemi[i]]->return_node()->getPosition().X->camera->getPosition().X)
					{
						
						anim_X = device->getSceneManager()->createFlyStraightAnimator(map_enemi[vecteur_enemi[i]]->return_node()->getPosition(),
						vector3df(map_enemi[vecteur_enemi[i]]->return_node()->getPosition().X- vitesse , map_enemi[vecteur_enemi[i]]->return_node()->getPosition().Y, map_enemi[vecteur_enemi[i]]->return_node()->getPosition().Z ), 0.1, false);
						map_enemi[vecteur_enemi[i]]->return_node()->addAnimator(anim_X);
						anim_X->drop();
					}
					else if(map_enemi[vecteur_enemi[i]]->return_node()->getPosition().X < camera->getPosition().X)
					{
						
						anim_X = device->getSceneManager()->createFlyStraightAnimator(map_enemi[vecteur_enemi[i]]->return_node()->getPosition(),
						vector3df(map_enemi[vecteur_enemi[i]]->return_node()->getPosition().X+ vitesse , map_enemi[vecteur_enemi[i]]->return_node()->getPosition().Y, map_enemi[vecteur_enemi[i]]->return_node()->getPosition().Z ), 0.1, false);
						map_enemi[vecteur_enemi[i]]->return_node()->addAnimator(anim_X);
						anim_X->drop();}
					else 
					{
					}
					if(map_enemi[vecteur_enemi[i]]->return_node()->getPosition().Z > camera->getPosition().Z)
					{
						
						anim_Z = device->getSceneManager()->createFlyStraightAnimator(map_enemi[vecteur_enemi[i]]->return_node()->getPosition(),
						vector3df(map_enemi[vecteur_enemi[i]]->return_node()->getPosition().X , map_enemi[vecteur_enemi[i]]->return_node()->getPosition().Y, map_enemi[vecteur_enemi[i]]->return_node()->getPosition().Z-vitesse ), 0.1, false);
						map_enemi[vecteur_enemi[i]]->return_node()->addAnimator(anim_Z);
						anim_Z->drop();}
					else if(map_enemi[vecteur_enemi[i]]->return_node()->getPosition().Z < camera->getPosition().Z)
					{
						
						anim_Z = device->getSceneManager()->createFlyStraightAnimator(map_enemi[vecteur_enemi[i]]->return_node()->getPosition(),
						vector3df(map_enemi[vecteur_enemi[i]]->return_node()->getPosition().X, map_enemi[vecteur_enemi[i]]->return_node()->getPosition().Y, map_enemi[vecteur_enemi[i]]->return_node()->getPosition().Z+vitesse ), 0.1, false);
						map_enemi[vecteur_enemi[i]]->return_node()->addAnimator(anim_Z);
						anim_Z->drop();}
					else 
					{
					}
				}
				}

1) Qu'est ce qui empeche les bot de se déplacer sur les X ?
2)Comment faire pour voir l'animation (courir ) ?


Hors ligne


#2 

08-10-2008 18:20:20

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 86.213.227.60
Courriel

Même si le code que tu donne est limité, il y a un truc qui me chagrine, c'est qu'en fait tu explores visiblement 4 possibilités de
positionnement par rapport à la camera. Ce qui donne 4 corps de tests distinct, jusque là je suis le truc.

Par contre, dans les parties 'anim_x' tu termines le corps de tes deux tests par anim_X->drop(), alors
que dans le corps des parties 'anim_z' tu termines tes deux test par anim_Z->grab();.
Pourquoi ?


Force et sagesse...

Hors ligne


#3 

12-10-2008 14:06:44

epsilon99
Membres
Date d'inscription:
Messages: 7
IP: 90.41.103.235
Courriel

Désolé erreur d'inatension je l'ai corrigé
Mais ça ne résous pas mes 2 bugs


Hors ligne


#4 

12-10-2008 15:43:40

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 86.218.187.206
Courriel

La comme cela ne ma saute pas aux yeux. Ne te serait-il pas possible d'écrire un petit code, réduit, reproduisant le bug (utilisant par exemple
les media du pack Irrlicht), et qui serait 'postable' pour mieux cerner le soucis ?

big_smile


Force et sagesse...

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
125 invités en ligne
membre en ligne: -
RSS Feed