#1 

13-03-2010 13:45:28

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 79.85.232.12
Courriel

Bonjour,

Voila je commence à vraiment saturer de perdre mon temps à faire des camera->getPosition() pour tester la position du joueur et faire réagir certains éléments en fonction de cela.

J'ai fait une classe interActionArme qui gére le tire et l'impact de mon flingue avec la map et tout ce qui est lier à la map et je voudrais tester dans ma classe jeu.cpp si je tire sur ce node alors la porte s'ouvre par exemple.

Est-ce que je peut réaliser ce test if( ....) { ouvrirPorte == true;} ?

Que dois je mettre dans les parenthéses ?

merci bien !


Hors ligne


#2 

13-03-2010 14:01:40

nabouill
Membres
Avatar de nabouill
Date d'inscription:
Messages: 242
IP: 77.195.185.153
Courriel

Je pense qu'il faudrait faire un test de collision entre la balle de ton flingue et la porte, en gros

Code c++ :


if(estEnCollision(balle, porte))
{
     laPorteEstOuverte = true;
}

mais il faut bien sur codé la fonction "bool estEnCollision(ISceneNode *element1, ISceneNode *element2)"

Hors ligne


#3 

14-03-2010 17:01:23

Ilovechocolat
Membres
Date d'inscription:
Messages: 125
IP: 90.28.156.122
Courriel

Pour tester la collision entre deux objets tu a la technique des bounding box :

Code c++ :

mesh->getTransformedBoundingBox.intersectsWith(mesh2->getTransformedBoundingBox());

la méthode getTransformedBoundingBox se trouve dans la class ISceneNode (et donc tout ce qui en hérite).


Hors ligne


#4 

18-03-2010 13:15:15

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 195.221.123.215
Courriel

Bon après avoir bien rechercher j'ai trouvais une solution mais je n'arrive pas à savoir pourquoi çà ne marche pas :
J'utilise ceci :

virtual bool irr::scene::ISceneCollisionManager::getCollisionPoint  ( const core::line3d< f32 > &  ray,  
                                                                                                        ITriangleSelector *  selector,  
                                                                                                        core::vector3df &  outCollisionPoint,  
                                                                                                        core::triangle3df &  outTriangle,  
                                                                                                        const ISceneNode *&  outNode   
                                                                                                 )   [pure virtual]

Et mon code est :
if (sceneManager->getSceneCollisionManager()->irr::scene::ISceneCollisionManager::getCollisionPoint(line , meta, 10, tri, Ncaisse))
{
 // code 

}

L'erreur est :

error no matching fonction call to ' irr::scene::ISceneCollisionManager::getCollisionPoint ( const core::line3d< f32 > & ray, ITriangleSelector * selector, core::vector3df & outCollisionPoint, core::triangle3df & outTriangle, const ISceneNode *& outNode ) '

merci pour votre aide smile


Hors ligne


#5 

18-03-2010 17:15:22

Ilovechocolat
Membres
Date d'inscription:
Messages: 125
IP: 90.28.156.122
Courriel

Euh, tu est sur que c'est une bien l'erreur qu'il te donne, car a ma connaissance aucuns compilo n'est capable de retrouver le nom des variables, il devrait plutôt de donner un truc comme ça :

error no matching fonction call to ' irr::scene::ISceneCollisionManager::getCollisionPoint (const core::line3d< f32 >, ITriangleSelector*,  core::vector3df,  core::triangle3df, const ISceneNode*) '

Est tu sur que c'est vraiment l'erreur qu'il te donne ?
Et il faudrait aussi avoir plus de code parce que des variables, c'est pas super précis .


Hors ligne


#6 

18-03-2010 19:41:47

jonath313
Membres
Date d'inscription:
Messages: 240
IP: 195.221.123.215
Courriel

oui je suis certain mais pourtant je pensais avoir bien rempli les paramétres de la fonction je ne vois pas pourquoi il me dit çà !!!


Hors ligne


#7 

18-03-2010 21:13:12

nabouill
Membres
Avatar de nabouill
Date d'inscription:
Messages: 242
IP: 77.195.185.153
Courriel

ton 3em paramètre
tu lui envoie un "10", alors que lui il veut un "vector3df"

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