#0 

08-07-2007 22:13:55

shell
Membre
Date d'inscription: 08-07-2007
Messages: 10

Bonjour,
je trouve aucun tuto sur internet, et j'aimerais savoir comment gérer les collisions, je n'ai pas compris dans le tuto 7 livré avec irrlicht...
J'aimerais un exemple de code pour la map de quake 3 chargée...
merci !

Hors ligne


#1 

10-07-2007 10:49:23

Willikus
Abonné
Date d'inscription: 21-10-2006
Messages: 150
Site web

La collision c'est plutot simple (en tout cas, de ce que j'en connais ^^) :

Tu cree un mesh (ou tu l'importe) :
scene::IAnimatedMesh* q3levelmesh = smgr->getMesh("20kdm2.bsp");

tu cree un node :
scene::ISceneNode* q3node = 0;

puis tu ascosi le mesh au node :
q3node = smgr->addOctTreeSceneNode(q3levelmesh->getMesh(0));

tu cree un JeCpascommentças'appel :
scene::ITriangleSelector* selector = 0;

et tu lui ascosi le node :
selector = smgr->createOctTreeTriangleSelector(q3levelmesh->getMesh(0), q3node, 128);
q3node->setTriangleSelector(selector);
selector->drop();

La ton selector "reconnaitra" la surface du mesh.
Il te reste donc a dire a la camera que cette surface est "dur" :

tu cree la cam :
scene::ICameraSceneNode* camera =
smgr->addCameraSceneNodeFPS(0, 100.0f, 300.0f, -1, 0, 0, true);

puis tu lui ascosi la collision avec comme surface "selector" :
scene::ISceneNodeAnimator* anim = smgr->createCollisionResponseAnimator(
selector, camera, core::vector3df(30,50,30),
core::vector3df(0,-3,0),
core::vector3df(0,50,0));
camera->addAnimator(anim);
anim->drop();



Voilà !
Je sais pas si j'ai été bien claire hmm

O pire, des plus expérimentés (surtout plus fort dans le domaine), viendront te le dire...


a+
w


Athlon 3000+ / 1024Mo PC3200 /8800 GTS

Hors ligne


#2 

10-07-2007 17:49:28

shell
Membre
Date d'inscription: 08-07-2007
Messages: 10

Mias quand on veut qu'un mesh percute les murs de la map, comment on peut faire.? c'est différent car ca dépend du mouvement qu'on attribue au mesh, non ?

Hors ligne


#3 

10-07-2007 18:36:16

Perceval
Abonné
Date d'inscription: 20-10-2006
Messages: 105

Si tu veux des objets qui "rebondissent", tu vas devoir devoir utiliser un moteur physique (ODE, Newton, Bullet...). J'ai vu çà récemment sur le forum officiel :
http://irrlicht.sourceforge.net/phpBB2/ … hp?t=22757
http://irrlicht.sourceforge.net/phpBB2/ … hp?t=22764
J'ai pas encore eu le temps de les tester, mais apparemment, çà simplifie beaucoup la création "d'objets physiques" smile

Hors ligne


#4 

10-07-2007 18:55:11

shell
Membre
Date d'inscription: 08-07-2007
Messages: 10

non, je voudrais qu'un bot ne traverse pas les murs...pas de rebonds pour le moment... merci smile

Hors ligne


#5 

10-07-2007 18:57:34

Perceval
Abonné
Date d'inscription: 20-10-2006
Messages: 105

Ben alors le code de Willikus devrait suffir smile

Hors ligne


#6 

10-07-2007 20:55:53

Willikus
Abonné
Date d'inscription: 21-10-2006
Messages: 150
Site web

Ce n'est pas mon code mais le code du tuto.

je pense qu'il faut attribué un animateur pour chaque bots ?!

Enfin, je sais pas plus moi :?

a+
w


Athlon 3000+ / 1024Mo PC3200 /8800 GTS

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
34 invités en ligne
Aucun membre connecté
RSS Feed