#1 

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


#2 

10-07-2007 08:49:23

Willikus
Membres
Avatar de Willikus
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 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


#3 

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


#4 

10-07-2007 16:36:16

Perceval
Membres
Avatar de Perceval
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" smile


Hors ligne


#5 

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 smile


Hors ligne


#6 

10-07-2007 16:57:34

Perceval
Membres
Avatar de Perceval
Date d'inscription:
Messages: 105
IP: 90.32.119.190
Courriel

Ben alors le code de Willikus devrait suffir smile


Hors ligne


#7 

10-07-2007 18:55:53

Willikus
Membres
Avatar de Willikus
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


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