#0 

28-05-2008 18:54:44

lionelconvent
Petit nouveau
Date d'inscription: 28-05-2008
Messages: 4

bonjour

voici mon code
je ne comprend pas pourquoi il ne marche pas ?

tout se lance, je vois mes 2 mesh mais malheureusement je passe à travers...
un tout grand merci d'avance

Lionel

Code:

#include <irr/irrlicht.h>
#include <irr/IMetaTriangleSelector.h> 
 
using namespace irr;

using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
 
int main(void)
{
 
  //Cette ligne va créer un contexte d'affichage OpenGL
  IrrlichtDevice *device = createDevice (video::EDT_OPENGL, core::dimension2d<s32>(800,600),32,false,true,false,0);
 
  //On associe un driver à la fenêtre
  IVideoDriver* driver = device->getVideoDriver ();
  //Et on crée un gestionnaire de scène (scenegraph)
  ISceneManager *scenegraph = device->getSceneManager ();



//scenegraph->loadScene("map5.irr");

IAnimatedMesh* mesh2 = scenegraph->getMesh("decor.tour_eiffel0.01.b3d");
IAnimatedMesh* mesh3 = scenegraph->getMesh("solmur.b3d");
ISceneNode* node2 = 0;
ISceneNode* node3 = 0;
    if (mesh2)
    {
        node2 = scenegraph->addOctTreeSceneNode(mesh2->getMesh(0));
        node2->setPosition(core::vector3df(100,0,100));
        node2->setMaterialTexture(0, driver->getTexture("sydney.bmp") );
        node2->setMaterialFlag(EMF_LIGHTING, false);
    }
    if (mesh3)
    {
        node3 = scenegraph->addOctTreeSceneNode(mesh3->getMesh(0));
        node3->setPosition(core::vector3df(0,0,100));
        node3->setMaterialTexture(0, driver->getTexture("sydney.bmp") );
        node3->setMaterialFlag(EMF_LIGHTING, false);
        node3->setScale(core::vector3df(10,10,10));        
    }    
    ITriangleSelector* selector = 0;
    ITriangleSelector* selector3 = 0;

        selector = scenegraph->createTriangleSelector(mesh2,node2);
        node2->setTriangleSelector(selector);

        selector3 = scenegraph->createTriangleSelector(mesh3,node3);            
        node3->setTriangleSelector(selector3);

        IMetaTriangleSelector* metaSelector = scenegraph->createMetaTriangleSelector();
        metaSelector->addTriangleSelector(selector);
        metaSelector->addTriangleSelector(selector3); 

ICameraSceneNode * camera1 = scenegraph->addCameraSceneNodeFPS(0,50.0f,60,-1,0,0,true);

if (camera1)
    { 
        camera1->setPosition(core::vector3df(100,10,0));
        camera1->setRotation(core::vector3df(0,260.0f,0));
    }

device->getCursorControl()->setVisible(false);

        ISceneNodeAnimatorCollisionResponse* anim = scenegraph->createCollisionResponseAnimator(metaSelector, camera1, core::vector3df(5,5,5), core::vector3df(0,0,0), core::vector3df(0,50,0));
        metaSelector->drop();
        camera1->addAnimator(anim);
        anim->drop();


 while (device->run ())
      {
        //On indique qu'on démarre la scène
        driver->beginScene (true, true, video::SColor (1,255,255,255));
        //On calcule le rendu
        scenegraph->drawAll ();
        //On affiche le rendu à l'écran
        driver->endScene ();
     }
     
  //On libère la mémoire en détruisant le device
  device->drop ();
  return 0;
}

Hors ligne


#1 

28-05-2008 19:58:07

lionelconvent
Petit nouveau
Date d'inscription: 28-05-2008
Messages: 4

oups mill excuse, j'avait juste mit des valeur trop petite dans

ISceneNodeAnimatorCollisionResponse* anim = scenegraph->createCollisionResponseAnimator(metaSelector, camera1, core::vector3df(5,5,5), core::vector3df(0,0,0), core::vector3df(0,50,0));
        metaSelector->drop();

tout marche nickel

Lionel

Hors ligne


#2 

28-05-2008 20:31:24

lionelconvent
Petit nouveau
Date d'inscription: 28-05-2008
Messages: 4

par contre j'ai une autre question

voila mes parametres

ISceneNodeAnimatorCollisionResponse* anim = scenegraph->createCollisionResponseAnimator(metaSelector, camera1, core::vector3df(1,5,1), core::vector3df(0,-3,0), core::vector3df(0,0,0));

que dois je faire pour qu'il ne monte pas sur les murs (les murs à 90 degrés, il ne les montes pas mais si c'est une mur à 85 degrés il monte dessus...

merci
Lionel

Hors ligne


#3 

28-05-2008 21:12:09

lionelconvent
Petit nouveau
Date d'inscription: 28-05-2008
Messages: 4

peut être est ce mieux d'utiliser newton... mais je préfèrerai dans un 1er temps éviter
merci

Hors ligne


#4 

29-05-2008 06:28:47

nikska
Membre
Lieu: Montpellier
Date d'inscription: 12-05-2008
Messages: 36

Une solution que j'envisage de mon coté c'est d'utiliser une line3d qui race une ligne qui part du personnage jusqu'à une certaine distance, pour vérifier qu'il n'y a pas collision avant d'effectuer un mouvement. Il y a peut être une meilleur solution !!

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
881 membres
1427 sujets
11117 messages
Dernier membre inscrit: Bidule
50 invités en ligne
Aucun membre connecté
RSS Feed