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
|
If GetDistance(Me.PosX, Me.PosY, Jeu.Boulles(i).PosX, Jeu.Boulles(i).PosY) - Me.rayon - Jeu.Boulles(i).rayon <= 0 And Me.TheI <> i Then 'ca, ca marche
Dim CDT As Integer = -1 / ((Me.PosY - Jeu.Boulles(i).PosY) / (Me.PosX - Jeu.Boulles(i).PosX) + 0.02) ' recherche du coef-directeur de la droite tangente passant par le point d'intersection des cercles
Dim d As New Point(1, CDT) ' j'ai oublié c'est quoi :( , je crois que j'ai voulu faire un truc qui s'appelle vecteur unitaire
Dim a As New Point(Me.VectX + CDT * Me.VectY, Me.VectX * CDT + CDT * CDT * Me.VectY) 'je sais pas c'est quoi mais je le guarde au cas ou c'est important
Dim up As New Point(2 * (Me.VectX + Me.VectY * CDT) - Me.VectX, 2 * (CDT * Me.VectX + CDT * CDT * Me.VectY) - Me.VectY) 'ca c'est le nouveau vecteur
If boo = True Then ' boo sert a éviter d' executer le code 3000 fois
Jeu.Boulles(i).colision(False)'je teste tout de suite pour l'autre boulle avant de faire les changement car sino elle croit qu'elle n'est plus en collision a cause du recul (mais ca marche pas :( )
While GetDistance(Me.PosX, Me.PosY, Jeu.Boulles(i).PosX, Jeu.Boulles(i).PosY) - Me.rayon - Jeu.Boulles(i).rayon <= 0 'on regarde si les boulles sont imbriquées les unes dans les autre et on les recule si oui pour éviter qu'elles restent collées enssemble (bug),mais ca marche toujour pas :ouin:
Me.PosX = Me.PosX - Me.VectX 'recul
Me.PosY = Me.PosY - Me.VectY 'recul
End While
End If
'la, j'enregistre les nouveaux vecteurs
Me.VectX = up.X
Me.VectY = up.Y
End If |
Partager