#1 

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


#2 

19-09-2010 10:00:47

Magun
Administrateurs
Avatar de Magun
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


#3 

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


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