2016-12-11 1 views
0

J'ai un problème avec les objets de rotation et le théorème de l'axe de séparation. Je peux détecter une collision sur l'axe X et Y mais je ne peux pas ajouter d'autre axe. Essayez d'écrire ce code:Comment la détection de collision sur l'axe P avec SAT

//player vector 
float lenght_box_p = odl(box_xy, box.getTransform().transformPoint(box.getPoint(0))); 


//line vector 
float lenght_line_p = odl(line_xy, line.getTransform().transformPoint(box.getPoint(0))); 

// center vector 
float lenght_center_p = odl(line_xy, box_xy); 

// angle 
float angle = cos((rotations * M_PI)/180); 

//box projection 
float projection_box_p = lenght_box_p * angle; 

//line projection 
float projection_line_p = lenght_line_p * angle; 

//center projection 
float projection_center_p = lenght_center_p * angle; 

float gap_p1 = lenght_center_p - projection_box_p - projection_line_p; 

if (gap_p1 <0) 
{ 
    return true; 
} 

J'utilise deux boîte 100 x 100, pour l'instant les deux boîtes sont orientées 59 * de l'axe horizontal.

C'est tout, grâce à l'aide et désolé mon anglais est pas bon ...

Répondre