#0 

23-11-2012 19:33:10

Logeur
Membre
Date d'inscription: 16-11-2012
Messages: 61

Bonjour à tous,


Je souhaiterai que ma caméra soit attiré au sol big_smile
Alors voilà est ce possible de gérer çà sans Newton ou autre moteur physique ?
J'aimerai que ma caméra soit coller au sol donc impossible de voler. Et dans un même temps la possibilité de sauter.

Est ce que Irrlicht sait faire çà ?


Merci de votre aide

Hors ligne


#1 

24-11-2012 01:29:43

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 902
Corrections: 2
Site web

ouaip, regarde la demo technique
tu crée un meta selector:

Code c++ :


    irr::scene::IMetaTriangleSelector *metaSelector = sm->createMetaTriangleSelector();


tu crée un triangle selector par nodes qui seront solide que tu rajoute au metaselector:

Code c++ :


        irr::scene::ITriangleSelector *mapSelector = sm->createOctreeTriangleSelector(le_pointeur_du_mesh_du_node, le_pointeur_du_node, 128);
    metaSelector->addTriangleSelector(mapSelector);


tu crée un animator:

Code c++ :


    irr::scene::ISceneNodeAnimatorCollisionResponse* collider = smgr->createCollisionResponseAnimator(metaSelector, camera, irr::core::vector3df(25,50,25), irr::core::vector3df(0, quakeLevelMesh ? -10.f : 0.0f,0) irr::,core::vector3df(0,45,0), 0.005f);


que tu rajoute a ta camera:

Code c++ :


    camera->addAnimator(collider);
        collider->drop();


plus de détaille dans les sources de la demo contenue dans les exemples irrlicht

s'il y a besoin d’approfondissement ... ?

Hors ligne


#2 

24-11-2012 13:10:35

Logeur
Membre
Date d'inscription: 16-11-2012
Messages: 61

Bon j'ai essayé ton code,

Ma caméra est collé au sol c'est bon mais si je vise vers le haut, je monte et je décolle du sol.
Comment faire pour éviter çà, impossibilité de se décoller du sol.

PS. Les collisions marchent wink

Hors ligne


#3 

24-11-2012 13:34:20

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

Extrait de la doc:

Code c++ :


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,-10.0f, 0),
        const core::vector3df &      ellipsoidTranslation = core::vector3df(0, 0, 0),
        f32      slidingValue = 0.0005f
    )         [pure virtual]


Donc tu as un paramètre "gravityPerSecond" au lieu de -10, tu mets -100 et tu augmentes jusqu'à ce que tu obtiennes le résultat. Normalement, si ta camera avance de n/seconde ta gravité doit être de -n. Tu as juste à regarder la vitesse d'avance de ta camera (je suppose cameraFPS).

Extrait de la doc :

Code c++ :


virtual ICameraSceneNode* irr::scene::ISceneManager::addCameraSceneNodeFPS     (     ISceneNode *      parent = 0,
        f32      rotateSpeed = 100.0f,
        f32      moveSpeed = 0.5f,
        s32      id = -1,
        SKeyMap *      keyMapArray = 0,
        s32      keyMapSize = 0,
        bool      noVerticalMovement = false,
        f32      jumpSpeed = 0.f,
        bool      invertMouse = false,
        bool      makeActive = true
    )         [pure virtual]

moveSpeed:    Speed in units per millisecond with which the camera is moved. Movement is done with the cursor keys.


Le parametre de déplacement est "moveSpeed" donc "gravitypersecond" = vector3df(0,-moveSpeed*1000,0).

Détails du calcul:
movespeed = 0.5f / milliseconde
gravityPerSecond = x / seconde = -movespeed / millisecondes = -movespeed*1000 / secondes

Dernière modification par johnplayer (24-11-2012 13:37:40)


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#4 

24-11-2012 14:01:21

Logeur
Membre
Date d'inscription: 16-11-2012
Messages: 61

Merci beaucoup.
Je suis désolé mais mon niveau d'Anglais est tellement faible alors c'est vraiment sympa la traduction big_smile

Hors ligne


#5 

24-11-2012 16:19:25

Logeur
Membre
Date d'inscription: 16-11-2012
Messages: 61

Voici mon code:

Code:

#include <irrlicht.h>
using namespace irr;

#ifdef _MSC_VER
#pragma comment(lib, "Irrlicht.lib")
#endif

class MyEventReceiver : public IEventReceiver
{
public:

    MyEventReceiver(scene::ISceneNode* terrain) : Terrain(terrain)
    {
    }

    bool OnEvent(const SEvent& event)
    {
        return false;
    }

private:
    scene::ISceneNode* Terrain;
};

int main()
{

    irr::IrrlichtDevice* device = irr::createDevice(irr::video::EDT_OPENGL, irr::core::dimension2d<irr::u32>(1000,800),32);
    video::IVideoDriver* driver = device->getVideoDriver();
    scene::ISceneManager* scene = device->getSceneManager();
    gui::IGUIEnvironment* env = device->getGUIEnvironment();

    device->setWindowCaption(L"Fast Jump [INDEV]");
    device->getCursorControl()->setVisible(false);

        irr::SKeyMap keyMap[4];
            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;

            scene::ICameraSceneNode* camera = scene->addCameraSceneNodeFPS(0,100.0f,2.5f, -1, keyMap, 4);

    camera->setPosition(core::vector3df(2700*2,255*2,2600*2));
    camera->setTarget(core::vector3df(2397*2,343*2,2700*2));
    camera->setFarValue(42000.0f);


    scene::ITerrainSceneNode* terrain = scene->addTerrainSceneNode("heightmap.png", 0, -1,
        core::vector3df(0.f, 0.f, 0.f),
        core::vector3df(0.f, 0.f, 0.f),
        core::vector3df(60.f, 10.f, 60.f),
        video::SColor ( 255, 255, 255, 255 ), 5, scene::ETPS_17, 4);

    terrain->setMaterialFlag(video::EMF_LIGHTING, false);
    terrain->setMaterialTexture(0, driver->getTexture("terrain-texture.jpg"));
    terrain->setMaterialTexture(1, driver->getTexture("detailmap3.jpg"));
    terrain->setMaterialType(video::EMT_DETAIL_MAP);
    terrain->scaleTexture(1.0f, 20.0f);

    // create triangle selector for the terrain
    scene::ITriangleSelector* selector = scene->createTerrainTriangleSelector(terrain, 0);
    terrain->setTriangleSelector(selector);

    // create collision response animator and attach it to the camera
    scene::ISceneNodeAnimator* anim = scene->createCollisionResponseAnimator(
        selector, camera, core::vector3df(60,100,60),
        core::vector3df(0,0,0),
        core::vector3df(0,50,0));
    selector->drop();
    camera->addAnimator(anim);
    anim->drop();


    MyEventReceiver receiver(terrain);
    device->setEventReceiver(&receiver);

    scene->setAmbientLight(irr::video::SColorf(1.0, 1.0, 1.0,0.0));

    while(device->run())
    if (device->isWindowActive())
    {
        driver->beginScene(true, true, 0 );
        scene->drawAll();
        env->drawAll();
        driver->endScene();
    }

    device->drop();

    return 0;
}

Quand je vise avec ma souris vers le haut, je continue à décoller du sol ;(

Hors ligne


#6 

24-11-2012 17:17:18

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 902
Corrections: 2
Site web

et avec le paramaetre noVerticalMovement a true quand tu crée ta camera ?

Hors ligne


#7 

24-11-2012 17:41:49

Logeur
Membre
Date d'inscription: 16-11-2012
Messages: 61

Que veux tu dire par là ?

Hors ligne


#8 

24-11-2012 18:25:38

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 902
Corrections: 2
Site web

Code c++ :


virtual ICameraSceneNode* irr::scene::ISceneManager::addCameraSceneNodeFPS     (     ISceneNode *      parent = 0,
        f32      rotateSpeed = 100.0f,
        f32      moveSpeed = 0.5f,
        s32      id = -1,
        SKeyMap *      keyMapArray = 0,
        s32      keyMapSize = 0,
=>      bool      noVerticalMovement = false,
        f32      jumpSpeed = 0.f,
        bool      invertMouse = false,
        bool      makeActive = true
    )



je ne sais pas a quoi correspond exactement la paramêtre, mais il me semble suffisament explicite
peut-être qu'il permet de d'ignorer le vectieur verticale et donc d'empecher la camera de "monter" par le biais des touches d'avancement

dans le cadre de ce que tu fait sa n'empeche pas la cameras de bouger sur l'axe verticale étant donenr que la camera suis le terrain
a toi de tester

Hors ligne


#9 

24-11-2012 18:59:23

Logeur
Membre
Date d'inscription: 16-11-2012
Messages: 61

C'est excellent, sa marche mais oui y a toujours un "mais" si ma caméra se trouve face à une pente elle monte et du coup bah elle touche plus le sol et à ce moment là je me remet à voler xD
Newton serai pas mieux ? xD

Hors ligne


#10 

24-11-2012 20:31:18

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

Le code d'Irrlicht marche très bien, je l'utilise et je n'ai pas de problème. NoVerticalMovement t'empêche de te déplacer sur Y mais ne l'utilise pas tu n'en as pas besoin. Dans ton code que tu as donné au-dessus ta gravité est à zéro.

Code c++ :


// create collision response animator and attach it to the camera
    scene::ISceneNodeAnimator* anim = scene->createCollisionResponseAnimator(
        selector, camera, core::vector3df(60,100,60),
        core::vector3df(0,0,0),
        core::vector3df(0,50,0));
    selector->drop();
    camera->addAnimator(anim);
    anim->drop();



Ta gravité est réglée sur vector3df(0,0,0) au lieu de vector3df(0,-2500.f,0). (2500.f parce tu as réglé le "moveSpeed" de ta camera à 2.5f)
Vérifie que "ellipsoidRadius" est de la bonne taille et il serait mieux dans un premier temps de mettre "ellipsoidTranslation" à vector3df(0,0,0).


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#11 

24-11-2012 20:52:31

Logeur
Membre
Date d'inscription: 16-11-2012
Messages: 61

Alors là MERCI MERCI

Je vous remercie de votre aide, tout marche, quand je suis en descente sa descend enfin normal quoi.
Merci beaucoup

PS. En modifiant les valeurs c'est bon sa descend moi wink

Dernière modification par Logeur (24-11-2012 21:17:55)

Hors ligne


#12 

27-11-2012 17:49:09

Logeur
Membre
Date d'inscription: 16-11-2012
Messages: 61

Bonsoir,


Je viens de refaire mon code pour pouvoir utiliser ma map.
Et là tout bug. La gravité et le saut ont disparus ...
Alors que j'utilise le même code ...
Je désespère petit à petit ;(


Code:

#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.4f);

    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 = sceneManager-> addCameraSceneNodeFPS(0,100.0f,0.025f, -1, keyMap, 5, true, 10.5f);
    camera->setPosition(core::vector3df(0,100,0));
    camera->setTarget(core::vector3df(0,0,0));
    camera->setFarValue(42000.0f);


    scene::ISceneNodeAnimator *anim = sceneManager->createCollisionResponseAnimator(selector, camera, core::vector3df(60,100,60), core::vector3df(0,-100,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;
}

Dernière modification par Logeur (27-11-2012 17:52:02)

Hors ligne


#13 

27-11-2012 19:35:14

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

De grandes chances qu'il n'ait pas réussi à charger le mesh. Tu ne créé pas le selector si le node "scene" n'est pas créé mais pourtant tu l'autorises à être paramètré?!
Essaies ça déjà:

Code c++ :


#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::ITriangleSelector *selector = NULL;
    if (scene)
    {
        scene -> setMaterialFlag(video::EMF_LIGHTING,false);
        scene -> setMaterialTexture(0, driver -> getTexture("terrain-texture.jpg"));
        sceneManager -> getMeshManipulator() -> makePlanarTextureMapping(map -> getMesh(0), 0.4f);
        selector = sceneManager->createOctTreeTriangleSelector(map->getMesh(0), scene);
        if(selector)
       {
            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 = sceneManager-> addCameraSceneNodeFPS(0,100.0f,0.025f, -1, keyMap, 5, true, 10.5f);
    camera->setPosition(core::vector3df(0,100,0));
    camera->setTarget(core::vector3df(0,0,0));
    camera->setFarValue(42000.0f);

    if(selector)
    {
        scene::ISceneNodeAnimator *anim = sceneManager->createCollisionResponseAnimator(selector, camera, core::vector3df(60,100,60), core::vector3df(0,-100,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;
}

core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#14 

27-11-2012 19:40:50

Logeur
Membre
Date d'inscription: 16-11-2012
Messages: 61

J'ai repris ton code mais tjrs le même problème.
Et puis impossible de se déplacer sur toute la carte.
Je vais vite fait faire une vidéo :  Voici : http://www.youtube.com/watch?v=nP9n6MOJ … e=youtu.be

Dernière modification par Logeur (27-11-2012 19:46:16)

Hors ligne


#15 

27-11-2012 19:51:53

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

Certainement à cause du relief et de ta colision. Vu comment est ton terrain, tu dois rester bloquer entre les obstacles qu'il forme. Essai avec un terrain plat ou au moins avec des obstacles qu'il est possible de franchir avec tes paramètres de collision.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#16 

27-11-2012 19:53:25

Logeur
Membre
Date d'inscription: 16-11-2012
Messages: 61

Mais le problème c'est que j'aimerais garder ce terrain.
Y a pas moyen de faire autrement ?

Hors ligne


#17 

27-11-2012 20:00:55

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

Régler tes paramètres! Si le saut ne marche pas c'est que la valeur n'est pas appropriée, peut-être régler slidingvalue et l'ellipsoidradius de ta colision pour franchir plus facilement les obstacles... S'il y a des paramètres dans les fonctions c'est pour ça. Après peut-être quand modélisant ton terrain différemment tu peux faire quelque chose. Mais là je ne sais pas vraiment ce que tu veux donc comment je pourrais te donner une réponse précise?


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#18 

27-11-2012 20:20:33

Logeur
Membre
Date d'inscription: 16-11-2012
Messages: 61

J'aimerai faire un petit jeu de saut d'obstacle donc automatiquement je dois avoir des endroits plus hauts que d'autres.

Et puis même avec un terrain plat, je n'ai plus mes sauts et la gravité. ;(


Je suis vraiment désolé de vous embêter avec mes problèmes

Dernière modification par Logeur (27-11-2012 20:43:29)

Hors ligne


#19 

27-11-2012 22:09:40

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

Augmentes le paramètre de saut, peut-être que la gravité de ta collision est trop forte.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#20 

27-11-2012 22:12:49

Logeur
Membre
Date d'inscription: 16-11-2012
Messages: 61

Bah j'aimerai bien déjà avoir de la gravité xD
Je ne suis même pas attiré par le sol.
J'ai beau changé les valeurs rien ne se passe...

Hors ligne


#21 

27-11-2012 22:32:40

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

Utilises printf() pour vérifier l'état de tes variables (selector, anim...) et aussi pour vérifier que tes bouts de code conditionnés sont bien executés.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#22 

28-11-2012 06:44:33

Logeur
Membre
Date d'inscription: 16-11-2012
Messages: 61

Mais là je vois pas d'où viens le problème j'utilise le même code que si c'était une heightmap, et là cela ne marche alors que sur la heightmap c'était génial ...

Code:

#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("mapp.obj");
    scene::ImeshSceneNode *scene = sceneManager -> addMeshSceneNode(map -> getMesh(0));
    scene::ITriangleSelector *selector = NULL;
    if (scene)
    {
        scene -> setMaterialFlag(video::EMF_LIGHTING,false);
        scene -> setMaterialTexture(0, driver -> getTexture("terrain-texture.jpg"));
        sceneManager -> getMeshManipulator() -> makePlanarTextureMapping(map -> getMesh(0), 0.4f);
        selector = sceneManager->createOctTreeTriangleSelector(map->getMesh(0), scene);
        if(selector)
       {
            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 = sceneManager-> addCameraSceneNodeFPS(0,100.0f,0.025f, -1, keyMap, 5, true, 100.5f);
    camera->setPosition(core::vector3df(0,4,0));
    camera->setTarget(core::vector3df(10000,10000,10000));
    camera->setFarValue(42000.0f);

    if(selector)
    {
        scene::ISceneNodeAnimator *anim = sceneManager->createCollisionResponseAnimator(selector, camera, core::vector3df(100,100,100), core::vector3df(0,0,0), core::vector3df(0,0,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;
}

Hors ligne


#23 

28-11-2012 09:34:13

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

Tu le fais exprès ou quoi? dans "createCollisionResponseAnimator()" la gravité est à 0, normal que tu n'es pas de gravité!


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#24 

28-11-2012 15:42:42

Logeur
Membre
Date d'inscription: 16-11-2012
Messages: 61

Sa change rien.
Dans ma zone où se trouve mon terrain il y a pas de gravité et dès que j'en sors j'ai de la gravité et mes sauts qui marchent.
Où change t'on les coordonnées de ma map. Car du coup cela doit venir de çà.

Je suis vraiment désolé de t'embeter, et non je le fais pas exprès c'est juste que je bloque sur le sujet donc je change plein de trucs.

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
Analysé par
872 membres
1423 sujets
11109 messages
Dernier membre inscrit: Glider
7 invités en ligne
Aucun membre connecté
RSS Feed

[ Générée en 0.137 sec., 10 requêtes exécutées ]