Historique des modifications - Message

Message #1807

Sujet: apesanteur et animation


Type Date Auteur Contenu
Création du message 07-03-2007 02:50:09 babar63
bien le bonsoir a tous mon projet commence à aboutir cependant j'ai rencontré un dernier problème je n'arrive plus a déplacer mon personnage (alors que mes animations marchent plus très bien pour une fois!!!)
Voila ma situation :

variables utiles :
ISceneNode* nodeG=0; //il s'agit en fait d'un simple cube situé derriere la camera qui permet d'y attacher la 
        //cam et le perso, ainsi, j'effectue les translation seulement sur ce noeud
IAnimatedMeshSceneNode* nodePerso=0;
IAnimatedMesh* meshPerso=0;
IAnimatedMesh* meshPersoGauche=0;

fonction de chargement du perso :
void chargementPerso()
{
	//chargement des differents mesh du perso :
	meshPerso = smgr->getMesh("../media/pandaAnimNormal.X");
	meshPersoGauche = smgr->getMesh("../media/PandaAnimGauch.X");

	//initialisation du noeud :
	nodePerso = smgr->addAnimatedMeshSceneNode(meshPerso);

	//gestion de l'animation du perso
	nodePerso->setLoopMode(false);

	//le personnage est attaché au noeud nodeG
	nodeG->addChild(nodePerso);

};

classe evenement :
class RecepteurEvenement : public IEventReceiver{
public:
   virtual bool OnEvent(SEvent event)
   { 
      if (nodePerso != 0 && event.EventType == irr::EET_KEY_INPUT_EVENT)
      {
         switch(event.KeyInput.Key){		
            case KEY_LEFT:{
               if(!rotatGauche) {
                  //mis a jour des booléens :
                  posOriginal = false;
                  rotatGauche = true;
                  rotatDroite = false;
                   rotatArriere = false;
						
                  //chargement de l'anim :
                  nodePerso->drop();
                  nodePerso = smgr->addAnimatedMeshSceneNode(meshPersoGauche);
                  nodePerso->setLoopMode(false);
                  nodeG->addChild(nodePerso);
               }
               core::vector3df v = nodeG->getPosition();
               v.X -= 4.0f;
               nodeG->setPosition(v);
               break;
            }  
            // idem pour les autres touches
         }
      }
      return false;
   }
};

class animation :
class IdleAnimatorNode : public ISceneNodeAnimator{
public :
	virtual void animateNode(ISceneNode * node,u32 timeMs){
		//utilisé pour le déplacement automatique
		core::vector3df v = node->getPosition();
		v.Z += 0.25f;
		node->setPosition(v);
	}
};

utilisation :
void animation(){
	//j'attache l'animateur au noeud nodeG
	IdleNode = new IdleAnimatorNode;
	IdleNode->animateNode(nodeG,15);
	nodeG->addAnimator(IdleNode);
	IdleNode->drop();
}

J'espere ne pas trop abuser de votre gentillesse vous m'avez déjà bien aidé mais la j'avoue que je ne sais plus quoi faire.....donc si vous voyez quelques choses qui ne semble pas normal faites moi signes svp wink

@bientot ^^

Retour

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
544 invités en ligne
membre en ligne: -
RSS Feed