08-07-2007 20:13:55
- shell
- Membres
- Date d'inscription:
- Messages: 10
- IP: 90.22.93.134
- Courriel
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
10-07-2007 08:49:23
- Willikus
- Membres

- Date d'inscription:
- Messages: 150
- IP: 86.220.167.149
- Courriel 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 ![]()
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
10-07-2007 15:49:28
- shell
- Membres
- Date d'inscription:
- Messages: 10
- IP: 90.22.73.195
- Courriel
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
10-07-2007 16:36:16
- Perceval
- Membres

- Date d'inscription:
- Messages: 105
- IP: 90.32.119.190
- Courriel
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/viewtopic.php?t=22757
http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=22764
J'ai pas encore eu le temps de les tester, mais apparemment, çà simplifie beaucoup la création "d'objets physiques" ![]()
Hors ligne
10-07-2007 16:55:11
- shell
- Membres
- Date d'inscription:
- Messages: 10
- IP: 90.22.73.195
- Courriel
non, je voudrais qu'un bot ne traverse pas les murs...pas de rebonds pour le moment... merci ![]()
Hors ligne
10-07-2007 16:57:34
- Perceval
- Membres

- Date d'inscription:
- Messages: 105
- IP: 90.32.119.190
- Courriel
Ben alors le code de Willikus devrait suffir ![]()
Hors ligne
10-07-2007 18:55:53
- Willikus
- Membres

- Date d'inscription:
- Messages: 150
- IP: 86.214.68.132
- Courriel 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



