Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <math.h>
- /*
- Dans cet algo :
- (a,b) représente la position du joueur et (w1,h1) sa largeur et hauteur
- (c,d) représente la position du bloc et (w2,h2) " " "
- Il ne marche que si l'orgine des coord. d'une sprite est en haut à gauche
- Si l'origine est au centre de la sprite, alors x1 = a, y1 = b, x2 = c, y2 = d
- */
- if (/*conditions de collisions habituelles*/){
- double x1 = a + 0.5*w1;
- double y1 = b + 0.5*h1;
- double x2 = c + 0.5*w2;
- double y2 = d + 0.5*h2;
- double vx = x1-x2;
- double vy = y1-y2;
- double norm = sqrt( pow(vx,2) + pow(vy,2) );
- vx /= norm;
- vy /= norm;
- double angle = acos(vx);
- double sign = vy/abs(vy);
- angle *= sign;
- double pis4 = atan(1);
- if((angle <= pis4 && angle >= -pis4) || norm == 0){
- a = c + w2;
- } else if(angle <= 3*pis4 && angle >= pis4){
- b = d + h2;
- } else if(angle <= -pis4 && angle >= -3*pis4){
- b = d - h1;
- } else if(angle <= -3*pis4 || angle >= 3*pis4){
- a = c - w1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement