#1 

23-11-2012 18:33:10

Logeur
Membres
Avatar de Logeur
Date d'inscription:
Messages: 61
IP: 5.48.75.208
Courriel

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


#2 

24-11-2012 00:29:43

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 83.203.57.175
Courriel  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


#3 

24-11-2012 12:10:35

Logeur
Membres
Avatar de Logeur
Date d'inscription:
Messages: 61
IP: 5.48.75.208
Courriel

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


#4 

24-11-2012 12:34:20

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.80.19
Courriel

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


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


#5 

24-11-2012 13:01:21

Logeur
Membres
Avatar de Logeur
Date d'inscription:
Messages: 61
IP: 5.48.75.208
Courriel

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


#6 

24-11-2012 15:19:25

Logeur
Membres
Avatar de Logeur
Date d'inscription:
Messages: 61
IP: 5.48.75.208
Courriel

Voici mon 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


#7 

24-11-2012 16:17:18

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 83.203.57.175
Courriel  Site web

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

Hors ligne


#8 

24-11-2012 16:41:49

Logeur
Membres
Avatar de Logeur
Date d'inscription:
Messages: 61
IP: 5.48.75.208
Courriel

Que veux tu dire par là ?


Hors ligne


#9 

24-11-2012 17:25:38

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 83.203.57.175
Courriel  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


#10 

24-11-2012 17:59:23

Logeur
Membres
Avatar de Logeur
Date d'inscription:
Messages: 61
IP: 5.48.75.208
Courriel

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


#11 

24-11-2012 19:31:18

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.80.19
Courriel

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


#12 

24-11-2012 19:52:31

Logeur
Membres
Avatar de Logeur
Date d'inscription:
Messages: 61
IP: 5.48.75.208
Courriel

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


Hors ligne


#13 

27-11-2012 16:49:09

Logeur
Membres
Avatar de Logeur
Date d'inscription:
Messages: 61
IP: 5.48.75.208
Courriel

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 ;(


#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;
}


Hors ligne


#14 

27-11-2012 18:35:14

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.80.19
Courriel

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


#15 

27-11-2012 18:40:50

Logeur
Membres
Avatar de Logeur
Date d'inscription:
Messages: 61
IP: 5.48.75.208
Courriel

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=nP9n6MOJ0N0&feature=youtu.be


Hors ligne


#16 

27-11-2012 18:51:53

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.80.19
Courriel

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


#17 

27-11-2012 18:53:25

Logeur
Membres
Avatar de Logeur
Date d'inscription:
Messages: 61
IP: 5.48.75.208
Courriel

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


Hors ligne


#18 

27-11-2012 19:00:55

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.80.19
Courriel

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


#19 

27-11-2012 19:20:33

Logeur
Membres
Avatar de Logeur
Date d'inscription:
Messages: 61
IP: 5.48.75.208
Courriel

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


Hors ligne


#20 

27-11-2012 21:09:40

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.80.19
Courriel

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


#21 

27-11-2012 21:12:49

Logeur
Membres
Avatar de Logeur
Date d'inscription:
Messages: 61
IP: 5.48.75.208
Courriel

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


#22 

27-11-2012 21:32:40

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.80.19
Courriel

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


#23 

28-11-2012 05:44:33

Logeur
Membres
Avatar de Logeur
Date d'inscription:
Messages: 61
IP: 5.48.75.208
Courriel

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 ...

#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


#24 

28-11-2012 08:34:13

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.80.19
Courriel

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


#25 

28-11-2012 14:42:42

Logeur
Membres
Avatar de Logeur
Date d'inscription:
Messages: 61
IP: 5.48.75.208
Courriel

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