Historique des modifications - Message

Message #4279

Sujet: Collision avec map irrEdit


TypeDateAuteurContenu
Dernière modification18-06-2008 14:01:57pspmy
Vous avez fait une map avec irrEdit et vous voulez les collision(seulement avec les mesh)?

il suffit de faire sa:

declaration:
IAnimatedMesh *Scene1Mesh[20];
ISceneNode* Scene1Node[20];
IMeshCache *MeshEnMemoire;
ITriangleSelector *Colision[20];
int NbrColision;
IMetaTriangleSelector *MetaColisionTriangle;
ISceneNodeAnimatorCollisionResponse  *CameraAnimCollision;

après avoir charger la map:
MeshEnMemoire = smgr->getMeshCache();    //recuperation des mesh en memoire est celle charger dans le .irr
NbrColision = 3;    
Scene1Mesh[1] = MeshEnMemoire->getMeshByIndex(0);

/!\\ métez NbrColision au nombre de collision que vous voulez + 1

les scene node:
Scene1Node[1] = smgr->addEmptySceneNode();  // pour la premiere collision
Scene1Node[2] = smgr->addEmptySceneNode();  // pour la deuxieme collision
//....

Déclarer autan de scene node que te collision voulu

ajout d'une collision:
         if (Scene1Node[1])
	{		
		Scene1Node[1]->setPosition(core::vector3df(-241.368347,146.190399,252.690628));
                Scene1Node[1]->setScale(vector3df(1,1,1));
        
		Colision[1] = smgr->createTriangleSelector(
                Scene1Mesh[1]->getMesh(0), Scene1Node[1]);
		Scene1Node[1]->setTriangleSelector(Colision[1]);
		Colision[1]->drop();
    
	} 	
	
	if (Scene1Node[2])
	{		
		Scene1Node[2]->setPosition(core::vector3df(557.968445,146.190399,252.690628));
                Scene1Node[2]->setScale(vector3df(1,1,1));
        
		Colision[2] = smgr->createTriangleSelector(
                Scene1Mesh[1]->getMesh(0), Scene1Node[2]);
		Scene1Node[2]->setTriangleSelector(Colision[2]);
		Colision[2]->drop();
    
	}

/!\\ n'oublier pas d'indiquer la position de la collision et le scale de l'objet

le morceau final:
MetaColisionTriangle = smgr->createMetaTriangleSelector();
        
for (int i = 1; i!=NbrColision; i++)
{
	MetaColisionTriangle->addTriangleSelector(Colision[i]);
}
        
        
CameraAnimCollision = smgr->createCollisionResponseAnimator(
	                                                                                        MetaColisionTriangle,
                                                                                               camera, 
                                                                                               core::vector3df(2,2,2),
	                                                                                       core::vector3df(0,0,0),
	                                                                                       core::vector3df(0,0,0));
camera->addAnimator(CameraAnimCollision);                                                                                                                                                                    
CameraAnimCollision->drop();

Voila si certain truc vous semble flout vous nesitez pas a demander
Création du message18-06-2008 14:00:27hardcpp
Vous avez fait une map avec irrEdit et vous voulez les collision(seulement avec les mesh)?

il suffit de faire sa:

declaration:
IAnimatedMesh *Scene1Mesh[20];
ISceneNode* Scene1Node[20];
IMeshCache *MeshEnMemoire;
ITriangleSelector *Colision[20];
int NbrColision;
IMetaTriangleSelector *MetaColisionTriangle;
ISceneNodeAnimatorCollisionResponse  *CameraAnimCollision;

après avoir charger la map:
MeshEnMemoire = smgr->getMeshCache();    //recuperation des mesh en memoire est celle charger dans le .irr
NbrColision = 3;    
Scene1Mesh[1] = MeshEnMemoire->getMeshByIndex(0);

/!\\ métez NbrColision au nombre de collision que vous voulez + 1

les scene node:
Scene1Node[1] = smgr->addEmptySceneNode();  // pour la premiere collision
Scene1Node[2] = smgr->addEmptySceneNode();  // pour la deuxieme collision
//....

Déclarer autan de scene node que te collision voulu

ajout d'une collision:
         if (Scene1Node[1])
	{		
		Scene1Node[1]->setPosition(core::vector3df(-241.368347,146.190399,252.690628));
                Scene1Node[1]->setScale(vector3df(1,1,1));
        
		Colision[1] = smgr->createTriangleSelector(
                Scene1Mesh[1]->getMesh(0), Scene1Node[1]);
		Scene1Node[1]->setTriangleSelector(Colision[1]);
		Colision[1]->drop();
    
	} 	
	
	if (Scene1Node[2])
	{		
		Scene1Node[2]->setPosition(core::vector3df(557.968445,146.190399,252.690628));
                Scene1Node[2]->setScale(vector3df(1,1,1));
        
		Colision[2] = smgr->createTriangleSelector(
                Scene1Mesh[1]->getMesh(0), Scene1Node[2]);
		Scene1Node[2]->setTriangleSelector(Colision[2]);
		Colision[2]->drop();
    
	}

/!\\ n'oublier pas d'indiquer la position de la collision et le scale de l'objet

le morceau final:
MetaColisionTriangle = smgr->createMetaTriangleSelector();
        
for (int i = 1; i!=NbrColision; i++)
{
	MetaColisionTriangle->addTriangleSelector(Colision[i]);
}
        
        
CameraAnimCollision = smgr->createCollisionResponseAnimator(
	                                                                                        MetaColisionTriangle,
                                                                                               camera, 
                                                                                               core::vector3df(2,2,2),
	                                                                                       core::vector3df(0,0,0),
	                                                                                       core::vector3df(0,0,0));
camera->addAnimator(CameraAnimCollision);                                                                                                                                                                    
CameraAnimCollision->drop();

Voila si certain truc vous semble flout vous nesitez pas a demander

Retour

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
180 invités en ligne
membre en ligne: -
RSS Feed