Historique des modifications - Message

Message #4279

Sujet: Collision avec map irrEdit


Type Date Auteur Contenu
Dernière modification 18-06-2008 14:01:57 pspmy
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 message 18-06-2008 14:00:27 hardcpp
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

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