Bonsoir à tous,
Je rencontre un certain problème.
Après avoir fait tout les tests avec une heightmap tout marche très bien. Mais dès que je passe avec ma carte là je tombe sur ce code d'erreur :
E:\irr\Irrlicht 1.8\Projet de base\main.cpp|52|error: 'class irr::scene::ImeshSceneNode' has no member named 'addCameraSceneNodeFPS'|
Je met le code au cas ou
#include <irrlicht.h> #include <iostream> using namespace std; using namespace irr; int main() { IrrlichtDevice *device = createDevice(video::EDT_OPENGL, core::dimension2d<u32>(1000,800), 32); video::IVideoDriver *driver = device -> getVideoDriver(); scene::ISceneManager *sceneManager = device -> getSceneManager(); device->setWindowCaption(L"Fast Jump [INDEV]"); device->getCursorControl()->setVisible(false); scene::IAnimatedMesh *map = sceneManager -> getMesh("mapFJ.obj"); scene::ImeshSceneNode *scene = sceneManager -> addMeshSceneNode(map -> getMesh(0)); scene -> setMaterialFlag(video::EMF_LIGHTING,false); scene -> setMaterialTexture(0, driver -> getTexture("terrain-texture.jpg")); sceneManager -> getMeshManipulator() -> makePlanarTextureMapping(map -> getMesh(0), 0.004f); scene::ITriangleSelector *selector = 0; if (scene) { selector = sceneManager->createOctTreeTriangleSelector(map->getMesh(0), scene); scene->setTriangleSelector(selector); selector->drop(); } SKeyMap keyMap[5]; keyMap[0].Action = irr::EKA_MOVE_FORWARD; keyMap[0].KeyCode = irr::KEY_KEY_Z; keyMap[1].Action = irr::EKA_MOVE_BACKWARD; keyMap[1].KeyCode = irr::KEY_KEY_S; keyMap[2].Action = irr::EKA_STRAFE_LEFT; keyMap[2].KeyCode = irr::KEY_KEY_Q; keyMap[3].Action = irr::EKA_STRAFE_RIGHT; keyMap[3].KeyCode = irr::KEY_KEY_D; keyMap[4].Action = EKA_JUMP_UP; keyMap[4].KeyCode = KEY_SPACE; scene::ICameraSceneNode* camera = scene-> addCameraSceneNodeFPS(0,100.0f,2.5f, -1, keyMap, 5, true, 0.5f); camera->setPosition(core::vector3df(2700*2,555*2,2600*2)); camera->setTarget(core::vector3df(2397*2,343*2,2700*2)); camera->setFarValue(42000.0f); scene::ISceneNodeAnimator *anim = sceneManager->createCollisionResponseAnimator(selector, camera, core::vector3df(60,100,60), core::vector3df(0,-1,0), core::vector3df(0,50,0)); camera->addAnimator(anim); anim->drop(); while(device -> run()) { driver -> beginScene(true, true, video::SColor(255,90,146,177)); sceneManager -> drawAll(); driver->endScene(); } device -> drop(); return 0; }
Merci de votre aide
Hors ligne
Il ne peut pas etre plus explicite tu mets à la ligne 52:
scene-> addCameraSceneNodeFPS(0,100.0f,2.5f, -1, keyMap, 5, true, 0.5f);
Or scene est déclaré tel qui suit:
scene::ImeshSceneNode *scene = sceneManager -> addMeshSceneNode(map -> getMesh(0));
Tu dois faire:
sceneManager->addCameraSceneNodeFPS(0,100.0f,2.5f, -1, keyMap, 5, true, 0.5f);
car addcameraSceneNodeFPS est une fonction de ISceneManager.
Sinon ça fait vraiment bizarre tes espaces autour des "->". ça rend le code moins lisible je trouve car "->" est un accesseur pas un opérateur donc pas d'espaces autour. Vu que tu as code::Block, il te suffit de passer le curseur au-dessus d'un terme pour en connaitre sa déclaration.
Hors ligne
Merci
Voilà ce qui arrive quand on dev après une dure journée de travail xD
Hors ligne