Advertisement
NightFox

Collision Box check

May 7th, 2013
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.38 KB | None | 0 0
  1. // Funcion CheckRectCollision();
  2. bool CheckRectCollision(s32 xa1, s32 ya1, s32 xb1, s32 yb1, s32 xa2, s32 ya2, s32 xb2, s32 yb2) {
  3.  
  4.     // Calcula anchos
  5.     s32 width1 = (xa1 - xb1);
  6.     if (width1 < 0) width1 = -width1;
  7.     s32 width2 = (xa2 - xb2);
  8.     if (width2 < 0) width2 = -width2;
  9.  
  10.     // Calcula alturas
  11.     s32 height1 = (ya1 - yb1);
  12.     if (height1 < 0) height1 = -height1;
  13.     s32 height2 = (ya2 - yb2);
  14.     if (height2 < 0) height2 = -height2;
  15.  
  16.     // Variables para el calculo
  17.     s32 small_xa, small_xb, small_ya, small_yb;
  18.     s32 big_xa, big_xb, big_ya, big_yb;
  19.  
  20.     // Asigna anchos
  21.     if (width1 >= width2) {
  22.         big_xa = xa1, big_xb = xb1;
  23.         small_xa = xa2, small_xb = xb2;
  24.     } else {
  25.         big_xa = xa2, big_xb = xb2;
  26.         small_xa = xa1, small_xb = xb1;
  27.     }
  28.  
  29.     // Asigna altos
  30.     if (height1 >= height2) {
  31.         big_ya = ya1, big_yb = yb1;
  32.         small_ya = ya2, small_yb = yb2;
  33.     } else {
  34.         big_ya = ya2, big_yb = yb2;
  35.         small_ya = ya1, small_yb = yb1;
  36.     }
  37.  
  38.     // Verifica si hay colision
  39.     bool collision = false;
  40.     if (
  41.         (
  42.         ((small_xa >= big_xa) && (small_xa <= big_xb))      // Rango horizontal
  43.         ||
  44.         ((small_xb >= big_xa) && (small_xb <= big_xb))
  45.         )
  46.         &&
  47.         (
  48.         ((small_ya >= big_ya) && (small_ya <= big_yb))      // Rango vertical
  49.         ||
  50.         ((small_yb >= big_ya) && (small_yb <= big_yb))
  51.         )
  52.         ) {
  53.         // Si hay colision, devuelve verdadero
  54.         collision = true;
  55.     }
  56.  
  57.     // Revuelve la colision
  58.     return collision;
  59.  
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement