#0 

08-10-2008 19:33:46

epsilon99
Petit nouveau
Date d'inscription: 25-06-2008
Messages: 7

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 .

Code:

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 ) ?

Dernière modification par epsilon99 (12-10-2008 16:05:39)

Hors ligne


#1 

08-10-2008 20:20:20

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

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 ?

Dernière modification par tmyke (08-10-2008 20:21:29)


Force et sagesse...

Hors ligne


#2 

12-10-2008 16:06:44

epsilon99
Petit nouveau
Date d'inscription: 25-06-2008
Messages: 7

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

Dernière modification par epsilon99 (12-10-2008 16:25:32)

Hors ligne


#3 

12-10-2008 17:43:40

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

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é
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
108 invités en ligne
Aucun membre connecté
RSS Feed