Salut,
Désolé pour le temps de réponse, periode d'exam = revisions ^^"
Sinon, donc pour répondre, je n'ai pas mis en ligne la version de test pour l'instant, mais j'ai repris un peu le code pour adapter avec des angles, parce que ça a un très net avantage pour une chose, c'est le rebond sur les briques. On peut donner un angle préçis plutôt qu'un changement de pas, et ça c'est bien ^^
Je compte utiliser ceci pour le rebond :
Je considère que les briques sont des rectangles. Pour mon rebond, j'ai donc ça :
12345678987654321
50000000000000005
90000000000000009
50000000000000005
12345678987654321
Ca c'est ma brique. Mon but est que plus l'endroit où la balle tape est proche de 9, plus l'angle de rebond est proche de 180°
Attention pour la suite, le repère de Flash est inversé : le point 0,0 est en haut à gauche.
Donc, pour calculer l'endroit où ça tape, j'ai besoin d'abord de savoir sur quel coté la balle tape. Pour ça, je me base sur la direction (tous mes angles dans le calcul sont en degré pour éviter d'écrire pi, mais dans le code en radian) :
- Si l'angle est entre 1 et 90, la balle monte vers la droite, donc ça peut taper à gauche ou en bas
- Entre 91 et 180, la balle monte vers la gauche, donc ça peut taper à droite ou en bas
- Entre 181 et 270, la balle descend vers la gauche, donc ça peut taper à droite ou en haut
- Entre 271 et 360, la balle descend vers la droite, donc ça peut taper à gauche ou en haut
Maintenant, tout le problème est de définir où ça tape.
Pour ça, je pensais à calcul l'équation de la droite : connaissans l'endroit précédent et le suivant, donc X, Y et X', Y', j'ai donc pour équation :
Soit A le coefficient directeur de la droite, tel que A = (Y' - Y) / (X' - X)
y = Ax + Y - AX
Je vais noter B = Y - AX
Donc, maintenant je prends le coin correspondant. Par exemple, si j'ai un angle de 40°, je prends l'angle en bas à gauche. Je connais ses coordonnés (soit u et v les coordonnés de la brique quand je l'ai positionnée, c'est u, v+h où h est la hauteur de la brique). Je vais les nommer U, V.
Je calcul alors le point Xt, Yt qui est le point de la droite tel que Yt = V :
Yt = AXt + B
<=>
V = AXt + B
<=>
-AXt = B - V
<=>
Xt = (B - V) / -A
Donc, maintenant c'est simple :
- Si Xt > U, alors la droite est à gauche du coin et donc ne touche pas le bord du bas mais celui de gauche
- Si Xt <= U, alors la droite est à droite du coin et donc touche le bord du bas et pas celui de gauche (j'inclue arbitrairement le coin dans ce bord)
Maintenant, pour calculer l'endroit précis, c'est très simple :
- Si Xt > U, je calcul le point Xt1, Yt1 tel que Xt1 = U :
Yt1 = AU + B
C'est l'endroit où ça cogne la brique
- Si Xt <= U, alors la balle cogne la brique en Xt, Yt
Est-ce qu'il y a des moyens plus simples de faire ? Je suis pas doué en maths ^^"
Désolé pour le temps de réponse, periode d'exam = revisions ^^"
Sinon, donc pour répondre, je n'ai pas mis en ligne la version de test pour l'instant, mais j'ai repris un peu le code pour adapter avec des angles, parce que ça a un très net avantage pour une chose, c'est le rebond sur les briques. On peut donner un angle préçis plutôt qu'un changement de pas, et ça c'est bien ^^
Je compte utiliser ceci pour le rebond :
Je considère que les briques sont des rectangles. Pour mon rebond, j'ai donc ça :
12345678987654321
50000000000000005
90000000000000009
50000000000000005
12345678987654321
Ca c'est ma brique. Mon but est que plus l'endroit où la balle tape est proche de 9, plus l'angle de rebond est proche de 180°
Attention pour la suite, le repère de Flash est inversé : le point 0,0 est en haut à gauche.
Donc, pour calculer l'endroit où ça tape, j'ai besoin d'abord de savoir sur quel coté la balle tape. Pour ça, je me base sur la direction (tous mes angles dans le calcul sont en degré pour éviter d'écrire pi, mais dans le code en radian) :
- Si l'angle est entre 1 et 90, la balle monte vers la droite, donc ça peut taper à gauche ou en bas
- Entre 91 et 180, la balle monte vers la gauche, donc ça peut taper à droite ou en bas
- Entre 181 et 270, la balle descend vers la gauche, donc ça peut taper à droite ou en haut
- Entre 271 et 360, la balle descend vers la droite, donc ça peut taper à gauche ou en haut
Maintenant, tout le problème est de définir où ça tape.
Pour ça, je pensais à calcul l'équation de la droite : connaissans l'endroit précédent et le suivant, donc X, Y et X', Y', j'ai donc pour équation :
Soit A le coefficient directeur de la droite, tel que A = (Y' - Y) / (X' - X)
y = Ax + Y - AX
Je vais noter B = Y - AX
Donc, maintenant je prends le coin correspondant. Par exemple, si j'ai un angle de 40°, je prends l'angle en bas à gauche. Je connais ses coordonnés (soit u et v les coordonnés de la brique quand je l'ai positionnée, c'est u, v+h où h est la hauteur de la brique). Je vais les nommer U, V.
Je calcul alors le point Xt, Yt qui est le point de la droite tel que Yt = V :
Yt = AXt + B
<=>
V = AXt + B
<=>
-AXt = B - V
<=>
Xt = (B - V) / -A
Donc, maintenant c'est simple :
- Si Xt > U, alors la droite est à gauche du coin et donc ne touche pas le bord du bas mais celui de gauche
- Si Xt <= U, alors la droite est à droite du coin et donc touche le bord du bas et pas celui de gauche (j'inclue arbitrairement le coin dans ce bord)
Maintenant, pour calculer l'endroit précis, c'est très simple :
- Si Xt > U, je calcul le point Xt1, Yt1 tel que Xt1 = U :
Yt1 = AU + B
C'est l'endroit où ça cogne la brique
- Si Xt <= U, alors la balle cogne la brique en Xt, Yt
Est-ce qu'il y a des moyens plus simples de faire ? Je suis pas doué en maths ^^"