Pages: 1
- Accueil forums
- » Collisions
- » Comment modifier les paramètres d'un collision animator?
27-08-2010 09:26:27
- benjani13
- Membres
- Date d'inscription:
- Messages: 9
- IP: 93.10.127.55
- Courriel
Bonjour, j'ai un perso qui se déplace dans la map BSP donnée avec Irrlicht. J'ai attaché un "ISceneNodeAnimatorCollisionResponse" à ce perso et les collisions marchent parfaitement. Je voudrais modifier un des paramètres de ce collision animator pendant l'exécution, mais lorsque je modifie un paramètre dans la boucle de rendu(que ce soit directement dans la boucle ou par une fonction appelée dans la boucle), le collision animator ne marche plus du tout et je n'ai donc plus aucune collision.
J'aimerais donc savoir s'il y a un moyen de changer un paramètre d'un collision animator au cours du programme. Merci.
Voici mon code si vous voyez une erreur de ma part:
La création du collision animator:
Code c++ :
//Création d'un collision animator pour le personnage
scene::ISceneNodeAnimatorCollisionResponse* anim;
if (selector)
{
anim = smgr->createCollisionResponseAnimator(selector, playerNode,
core::vector3df(19, 40.0f, 9.25f),
core::vector3df(0, -10, 0),
core::vector3df(0, 18, -1));
playerNode->addAnimator(anim);
}
La boucle de rendu, par exemple ici je change la gravité de l'animator avec anim->setGravity, après cela le collision animator ne marche plus du tout.
Code c++ :
//Boucle de rendu
while(device->run())
{
if(device->isWindowActive())
{
driver->beginScene(true, true, 0);
smgr->drawAll();
gui->drawAll();
anim->setGravity(core::vector3df(0, -10, 0)); // Modification de la gravité
time = (f32)device->getTimer()->getTime();
eventReceiver.updateNodePositons(time - lastTime);
eventReceiver.replaceCamera();
if(time - lastTime < MIN_FRAME_TIME)
{
device->sleep((u32)(MIN_FRAME_TIME - (time - lastTime)));
}
else
{
lastTime = time;
}
driver->endScene();
}
else
{
device->sleep(500);
}
}
J'ai essayé de mettre la modification avant le beginScene, après le beginScene, et après le endScene, mais toujours le même résultat. Par contre si je le fais avant la boucle de rendu, la gravité est changée normalement et le collision animator marche toujours parfaitement.
Hors ligne
19-09-2010 10:00:47
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
tu peut essayer repasser l'animator au scene node après l'avoir modifier ...
mais franchement j'en sais rien je ne les utilise pas !
les moteurs physique c'est nettement mieux
Hors ligne
19-09-2010 10:21:34
- benjani13
- Membres
- Date d'inscription:
- Messages: 9
- IP: 93.10.127.55
- Courriel
Non sa ne marche pas...
Je verrais plus tard pour les moteurs physique, pour l'instant je fais un prototype donc les collisions d'Irrlicht me suffisent.
Hors ligne



