Bonjour,
mon problème est que lorsque quand le programme arrive sur smgr->drawAll() mes coordonnées change toutes seul
par exemple si mes coordonnées sont 100,100,100 elle deviennent 21.1662, 15.9882, 21.9132
voici mon bout de code :
MyGraphe->LoadWorld(); MyEvent = new NJeux::Event(MyGui->getFen_Menu(), m_device, m_smgr, MyGraphe->getCameraFPS(), MyGraphe->getCamera()); MyPhysique->CreateWorld(MyGraphe->getCameraFPS(), MyGraphe->getNMap(), MyGraphe->getMap()); m_device->setEventReceiver(MyEvent); if(m_CamPos.X || m_CamPos.Y || m_CamPos.Z) { MyGraphe->getCameraFPS()->setPosition(irr::core::vector3df(m_CamPos.X, m_CamPos.Y, m_CamPos.Z)); MyGraphe->getCamera()->setPosition(irr::core::vector3df(m_CamPos.X, m_CamPos.Y, m_CamPos.Z)); std::cout << m_CamPos.X << " " << m_CamPos.Y << " " << m_CamPos.Z << std::endl; } std::cout << MyGraphe->getCameraFPS()->getPosition().X << " " << MyGraphe->getCameraFPS()->getPosition().Y << " " << MyGraphe->getCameraFPS()->getPosition().Z << std::endl; int i = 0; while(m_device->run()) { m_driver->beginScene(true, true, irr::video::SColor(0,200,200,200)); MyGraphe->UpDate(); MyGui->Update(MyGraphe->getCameraFPS()); m_smgr->drawAll(); if(i != 1) { std::cout << MyGraphe->getCameraFPS()->getPosition().X << " " << MyGraphe->getCameraFPS()->getPosition().Y << " " << MyGraphe->getCameraFPS()->getPosition().Z << std::endl; i = 1; } m_gui->drawAll(); m_driver->endScene(); }
j'ai regardé dans la fonction drawAll() et j'y voit rien qui puisse changer mes coordonnées
Si quelqu'un sait d'où sa peut venir je dit pas non ^^
Hors ligne
salut
Le probleme vient surement de ton MyGui->update(); envoie le code, à moin que tu es vérifié avec printf entre mygui->update et le drawall
dark caluclator
Hors ligne
Oui j'ai vérifié entre MyGui->update() et drawAll()
Hors ligne
Et tu n'a pas une animation applique a ta camera comme un gestionnaire de collision ou autre ?
C'est la derniere solution si non je vois pas.
Hors ligne
Effectivement le problème vient des collisions ou plutôt de
Voici le prototype de createCollisionResponseAnimator
virtual ISceneNodeAnimatorCollisionResponse* irr::scene::ISceneManager::createCollisionResponseAnimator ( ITriangleSelector * world, ISceneNode * sceneNode, const core::vector3df & ellipsoidRadius = core::vector3df(30, 60, 30), const core::vector3df & gravityPerSecond = core::vector3df(0,-100.0f, 0), const core::vector3df & ellipsoidTranslation = core::vector3df(0, 0, 0), f32 slidingValue = 0.0005f )
si j'ai bien compris:
ellipsoidRadius est le rayon dans lequel les collision seront effectuées
gravityPerSecond représente la "force" qui va s'exercer sur le node
par contre est ce que quelqu'un peut m'expliquer à quoi servent ellipsoidTranslation et slidingValue
Hors ligne
re
ellipsoidRadius correspond a l'ellipse qui va englober ta camera et les collisions seront calculer a partir de cette elipse. Par default elle est placé au centre de la camera mais par exemple un homme n'a pas les yeux au milieu du ventre c'est pourquoi on peut deplacer l'ellipse avec ellipsoidTranslation.
Quand à un sliding value je ne sais pas car la doc est muette sur le sujet
dark calculator
Hors ligne
Tu as toujours ton probleme ou c'est bon ?
Hors ligne
Non c'est bon c'est résolu, je c'est pas trop comment ^^
j'ai juste changé les vecteurs
Merci pour tes réponses
Hors ligne