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 ) ?
Dernière modification par epsilon99 (12-10-2008 16:05:39)
Hors ligne
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)
Hors ligne
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
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 ?
Hors ligne