Bonjour à tous, je vous explique mon problème.
Je voudrais faire une procédure qui me dessine des murs et qui fait que lorsque le personnage est assez proche du mur, il ne peut pas avancer s'il est dans la zone du mur (ni au dessus, ni à gauche, ni à droite).
Le problème c'est que comme je dois répéter cette procédure pour chaque mur dans mon projet, cela multiplie l'indice de déplacement du personnage s'il n'est pas devant un mur et au bout de 10 murs il court en supersonique.
J'ai alors essayé de réadapter ma fonction avec des boucles et des tableaux, la voici:
Mais, vous l'avez bien vu, la portion de code en rouge se répète pour chaque valeur de "i" dans la boucle et donc je retombe sur exactement le même problème.
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
27 procedure moveup {(abscisse, yinf, ysup, ceilar : array of GLFloat)}; var i : integer; begin for i := 1 to 19 do begin glBindTexture (GL_TEXTURE_2D, Texture1); glBegin(GL_QUADS); glColor3ub (255, 255, 255); glTexCoord2f (0, 1); glVertex3f (abscisse[i], yinf[i], ceilar[i]); glTexCoord2f (1, 1); glVertex3f (abscisse[i], ysup[i], ceilar[i]); glTexCoord2f (1, 0); glVertex3f (abscisse[i], ysup[i], -1); glTexCoord2f (0, 0); glVertex3f (abscisse[i], yinf[i], -1); glend(); if up = 1 then if (abscisse[i] + 1.3 < a) and (abscisse[i] + 1.5 > a) then if (yinf[i] < b) and (ysup[i] > b) and (c < ceilar[i] + 1) then a := a else a := a - 0.1 else a := a - 0.1 else a := a; end; end;
Ma question est est-ce que quelqu'un peut m'aider à trouver la solution pour que le déplacement else a := a - 0.1 ne soit pris en compte qu'une seule fois dans la boucle et dans tout le projet, autant qu'il y ait de murs?
Autrement dit, je ne voudrais pas cumuler les a := a - 0.1 pour chaque mur ajouté (ou chaque tour de boucle supplémentaire) comme c'est le cas actuellement.
Merci d'avance
Edit: Je précise que je travaille en OpenGL avec la librairie GLFW.
Partager