[Opengl] Labyrinthe problème
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:
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:
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;