#0 

17-11-2011 21:05:52

Lagiol
Membre
Date d'inscription: 17-11-2011
Messages: 24

Bonjour,
j'ai réussi à créer une détection de collision pour un mesh. Maintenant j'aimerais en ajouter un 2ème, histoire d'avoire une map plus grande. Seulement je n'y arrive pas. On peux passer à travers le mesh. Quelqu'un a une solution ?

Hors ligne


#1 

17-11-2011 21:53:45

thoced
Membre
Date d'inscription: 02-08-2010
Messages: 65

Peut etre devrais tu fournir un peu de ton code pour voir où est le probleme

Hors ligne


#2 

18-11-2011 22:37:42

Lagiol
Membre
Date d'inscription: 17-11-2011
Messages: 24

D'abbord, j'ajoute un node qui servira comme début de map et un Triangle selector

       IAnimatedMesh *mesh = sceneManager->getMesh("maps/pique_nique_v2.obj");
    ImeshSceneNode *node = 0;

    if (mesh)
        node = sceneManager->addOctTreeSceneNode(mesh->getMesh(0), 0, IDFlag_IsPickable);

    if (node)
    {
        selector = sceneManager->createOctTreeTriangleSelector(node->getMesh(), node, 128);
        node->setMaterialFlag(EMF_LIGHTING, false);
    }
    node->setPosition(vector3df(0.0f,0.0f,0.0f));
    node->setScale(vector3df(35.0f,35.0f,35.0f));

Là pas de problème. Et là, lorsque j'ajoute un deuxième node pour agrandire ma map, il y a quelques bugs

        IAnimatedMeshSceneNode *node2 = sceneManager->addAnimatedMeshSceneNode(sceneManager->getMesh("maps/plat.obj"), 0, IDFlag_IsPickable);
    node2->setPosition(vector3df(400.0f+100,0.0f,0.0f));
    node2->setScale(vector3df(40.0f,40.0f,40.0f));
    selector2 = sceneManager->createTriangleSelector(node2);

Et après, je sais pas si ça peux vous servir, mais voilà les selector

        //selectors
    if (selector)
    {
        ISceneNodeAnimator* animator = sceneManager->createCollisionResponseAnimator(selector, camera, vector3df(30,50,30), vector3df(0,-2,0), vector3df(0,30,0));
        selector->drop();
        camera->addAnimator(animator);
        animator->drop();
    }
    if (selector2)
    {
        ISceneNodeAnimator *animator2 = sceneManager->createCollisionResponseAnimator(selector2, camera, vector3df(30,50,30), vector3df(0,-2,0), vector3df(0,30,0));
        selector2->drop();
        camera->addAnimator(animator2);
        animator2->drop();
    }

Dites-moi si il y a un truc qui cloche

Hors ligne


#3 

19-11-2011 14:03:09

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

regarde du coter d'un http://irrlicht.sourceforge.net/docu/cl … ector.html
je n'utilise pas les "collision" d'irrlicht perso mais bullet, je ne suis donc pas d'une grand aide

mais je suppose qu'il faut crée un IMetaTriangleSelector ajouter t'est deux triangle selector, et enfin crée un animator sur celui-ci pour la camera.
sinon regarde la demo d'irrlicht wink

Hors ligne


#4 

19-11-2011 14:07:39

Lagiol
Membre
Date d'inscription: 17-11-2011
Messages: 24

Et je pourrais faire ça avec autantde mesh que je le veux ?

Et Bullet c'est quoi ?

Hors ligne


#5 

19-11-2011 14:38:07

Lagiol
Membre
Date d'inscription: 17-11-2011
Messages: 24

Sinon c'était bien ça, il fallais grouper les selectors dans un seul Meta et crééer un animator fait pour lui seul

Hors ligne


#6 

20-11-2011 08:44:22

thoced
Membre
Date d'inscription: 02-08-2010
Messages: 65

Oui, magun a raison, utilise un meta et tu pourra en ajouter tant que tu veux a§

Hors ligne


#7 

20-11-2011 14:03:31

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

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
879 membres
1424 sujets
11113 messages
Dernier membre inscrit: brendan87
14 invités en ligne
Aucun membre connecté
RSS Feed