Historique des modifications - Message

Message #10004

Sujet: [débutant] problème de caméra fps à la compilation


TypeDateAuteurContenu
Dernière modification28-05-2011 21:08:32Magun
faire du copier/coller et déplacer du text ne résume pas la programmation ...

quand tu me dit placer GameLoop dans la boucle de rendue j'est comprit un apelle de la fonction
tu devrait dabord combler tes lacunes en c++ avans de commencer un moteur 3d

Code c++ :

#include <irrlicht.h>
#include <iostream>

GameLoop(irr::scene::ICameraSceneNode*camera, IAnimatedMeshSceneNode*meshNode)
{
        camera->setPosition(meshNode->getPosition());
        camera->setRotation(meshNode->getRotation());
}
int main()
{
    irr::IrrlichtDevice *device = irr::createDevice(irr::video::EDT_OPENGL, irr::core::dimension2d<irr::u32>(800,600), 32, true, true, false,0);

    irr::video::IVideoDriver* driver = device->getVideoDriver();
    irr::scene::ISceneManager* smgr = device->getSceneManager();

    device->getCursorControl ()-> setVisible (false);
    irr::scene::IAnimatedMeshSceneNode * = smgr->addAnimatedMeshSceneNode (smgr->getMesh ("./plan.obj"));
    meshNode->setMaterialFlag(irr::video::EMF_LIGHTING, false);
    meshNode->setMaterialTexture(0, driver->getTexture("terrain-texture.jpg"));
    meshNode->setMD2Animation(irr::scene::EMAT_STAND);

    irr::scene::IMeshSceneNode* cube = smgr->addCubeSceneNode(10.0f,0, -1, irr::core::vector3df( 0.0f,0.0f, 20.0f));
    cube->setMaterialFlag(irr::video::EMF_WIREFRAME, true);

    irr::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 = irr::EKA_JUMP_UP;
    keyMap[4].KeyCode = irr::KEY_SPACE;

    irr::scene::ICameraSceneNode *camera = smgr->addCameraSceneNodeFPS( 0, 100.0f, 0.1f, -1, keyMap, 5);

    while (device->run())
    {
        driver->beginScene(true, true, irr::video::SColor(255,255, 255, 255));
             sceneManager->drawAll ();
             GameLoop(camera, meshNode);
        driver->endScene ();
    }
    device->drop ();
    return 0;
}


maintenant réfléchie deux secondsmile
que va faire la camera "fps" quand tu souhaite bouger ? (via les touche)
tu appuis sur un touche la camera "avance", elle change de position donc, et aussi tot après la camera changent de position par raport à meshNode ( via GameLoop )
a-tu donc beusoin d'une camera fps ?
si tu souhait faire bouger un nodes comme un personnage disons, c'est le nodes qui ce doit de bouger et non à la camera de transmetre les mouvements, elle ne fait que le suivre

et pensse a structuré t'est codes, sa risque de devenir vite illisible sur de gros codes
Création du message28-05-2011 21:07:03Magun
faire du copier/coller et déplacer du text ne résume pas la programmation ...

quand tu me dit placer GameLoop dans la boucle de rendue j'est comprit un apelle de la fonction
tu devrait dabord combler tes lacunes en c++ avans de commencer un moteur 3d

Code c++ :

#include <irrlicht.h>
#include <iostream>

GameLoop(irr::scene::ICameraSceneNode*camera, IAnimatedMeshSceneNode*meshNode)
{
        camera->setPosition(meshNode->getPosition());
        camera->setRotation(meshNode->getRotation());
}
int main()
{
    irr::IrrlichtDevice *device = irr::createDevice(irr::video::EDT_OPENGL, irr::core::dimension2d<irr::u32>(800,600), 32, true, true, false,0);

    irr::video::IVideoDriver* driver = device->getVideoDriver();
    irr::scene::ISceneManager* smgr = device->getSceneManager();

    device->getCursorControl ()-> setVisible (false);
    irr::scene::IAnimatedMeshSceneNode * = smgr->addAnimatedMeshSceneNode (smgr->getMesh ("./plan.obj"));
    meshNode->setMaterialFlag(irr::video::EMF_LIGHTING, false);
    meshNode->setMaterialTexture(0, driver->getTexture("terrain-texture.jpg"));
    meshNode->setMD2Animation(irr::scene::EMAT_STAND);

    irr::scene::IMeshSceneNode* cube = smgr->addCubeSceneNode(10.0f,0, -1, irr::core::vector3df( 0.0f,0.0f, 20.0f));
    cube->setMaterialFlag(irr::video::EMF_WIREFRAME, true);

    irr::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 = irr::EKA_JUMP_UP;
    keyMap[4].KeyCode = irr::KEY_SPACE;

    irr::scene::ICameraSceneNode *camera = smgr->addCameraSceneNodeFPS( 0, 100.0f, 0.1f, -1, keyMap, 5);

    while (device->run())
    {
        driver->beginScene(true, true, irr::video::SColor(255,255, 255, 255));
             sceneManager->drawAll ();
             GameLoop(camera, meshNode);
        driver->endScene ();
    }
    device->drop ();
    return 0;
}


maintenant réfléchie deux secondsmile
que va faire la camera "fps" quand tu souhaite bouger ? (via les touche)
tu appuis sur un touche la camera "avance", elle change de position donc, et aussi tot après la camera changent de position par raport à meshNode ( via GameLoop )
a-tu donc beusoin d'une camera fps ?
si tu souhait faire bouger un nodes comme un personnage disons, c'est le nodes qui ce doit de bouger et non à la camera de transmetre les mouvements, elle ne fait que le suivre

et pensse a structuré t'est codes, sa risque de devenir vite illisible sur de gros codes

Retour

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
86 invités en ligne
membre en ligne: -
RSS Feed