Salut tout le monde,

j'ai un problème qui me "gave" (excusez moi pour ce mot un peu familier):
En effet, je souhaite gérer les collisions dans mon labyrinthe (non mon jeu ne sera pas dans le concours :p) mais je n'y arrive que partiellement.Sur 2 côtés de mon mur (sous forme de carré)les collisions marchent impec mais sur les 2 autres les collisions fonctionnent à moitié :S: la caméra etre dans le mu pour être bloqué à l'intérieur (c'est pas top). Je tiens à préciser que mon labyrinthe est chargé depuis un fichier texte, par exemple (1 étant les murs et 0 espace libre):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
00000000000
00000000000
10000000
1111100001
0010100100111
0010000100000
001111100111
0000001111
Après avoir récité tout mon problème je vous fourni mes fonctions qui gère la caméra (je n'utilise pas de caméra freefly car ne connaissant pas assez bien le c++ et ne voulant pas m'y mettre à ce language):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
 
void Camera(float positionx, float positiony, float positionz, float rotationx, float rotationy, float rotationz) {//gère la caméra qui est fixe et fais des translations et rotations sur le décor
	 glMatrixMode(GL_MODELVIEW);
	 glLoadIdentity();
	 glRotatef(rotationx, 1.0f, 0.0f, 0.0f);
	 glRotatef(rotationy, 0.0f, 1.0f, 0.0f);
	 glRotatef(rotationz, 0.0f, 0.0f, 1.0f);
	 glTranslatef(positionx, positiony, positionz);
}
 
void checkMur(Map*map, CameraGestion*camera) {//on vérifie si la caméra a atteint un mur
	 map->positioni = (camera->posz)/3.0f;//on calcule la position de la caméra sur z suivant la map (on divise par 3 car chaque mur a une taille de 3*3*3)	 
	 map->positionj = (-camera->posx)/3.0f;
 
     if(map->load[(int)map->positioni][(int)map->positionj] == 0) {//si il n'y a pas de mur on enregistre la position de la caméra pour le réutiliser après
	     camera->oldposx = camera->posx;
	     camera->oldposy = camera->posy;
	     camera->oldposz = camera->posz;
	 }
	 else if(map->load[(int)map->positioni][(int)map->positionj] == 1) {//si c'est un mur on restaure la position de la caméra
         camera->posx = camera->oldposx;
	     camera->posy = camera->oldposy;
	     camera->posz = camera->oldposz;
	 }
}
Voilà si vous pouviez m'aider s'il vous plait, je vous en serais éternellement reconnaissant

Merci encore;