SHARE
TWEET

Untitled

a guest Jun 15th, 2019 58 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.      * get neighboring tiles of the centre of the entity.
  3.      * calls getCollisionTiles(x,y)
  4.      *
  5.      * @param obj
  6.      * @return
  7.      */
  8.     public Array<Tile> getCollisionTiles(Entity obj)
  9.     {
  10.         return getCollisionTiles((int)(obj.getX() + obj.getWidth() / 2),
  11.                 (int)(obj.getY() + obj.getHeight() / 2));
  12.     }
  13.    
  14.     public Array<Tile> getCollisionTiles(Rectangle rect)
  15.     {
  16.         return getCollisionTiles
  17.                 ((int)(rect.x + rect.width / 2),
  18.                  (int)(rect.y + rect.height / 2));
  19.     }
  20.    
  21.     /**
  22.      * Pass X & Y world coordinates, returns surrounding tiles.
  23.      *
  24.      * - Pick the tile that the point is in.
  25.      * - returns adjacent tiles + current tile in an Array
  26.      *
  27.      * used to get surrounding tiles for collision detection
  28.      *
  29.      *
  30.      * @param x
  31.      * @param y
  32.      * @return  adjacent tiles relative to point XY
  33.      */
  34.     public Array<Tile> getCollisionTiles(int x, int y)
  35.     {
  36.         Array<Tile> result = new Array<Tile>(9);
  37.        
  38.         int objX = x / Tile.SIZE;
  39.         int objY = y / Tile.SIZE;
  40.        
  41.         if(objX < 0) objX = 0;
  42.         if(objX > tiles.length - 1) objX = tiles.length - 1;
  43.  
  44.         if(objY < 0) objY = 0;
  45.         if(objY > tiles[0].length - 1) objY = tiles[0].length - 1;
  46.        
  47.         if(tiles[objX][objY].isSolid)
  48.         {
  49.             result.add(tiles[objX][objY]);
  50.         }
  51.        
  52.         if(objX > 0)
  53.         {
  54.             if(tiles[objX - 1][objY].isSolid)
  55.             {
  56.                 result.add(tiles[objX - 1][objY]);
  57.             }
  58.            
  59.         }
  60.        
  61.         if(objX < tiles.length - 1)
  62.         {
  63.             if(tiles[objX + 1][objY].isSolid)
  64.             {
  65.                 result.add(tiles[objX + 1][objY]);
  66.             }
  67.         }
  68.        
  69.         if(objY > 0)
  70.         {
  71.             if(tiles[objX][objY - 1].isSolid)
  72.             {
  73.                 result.add(tiles[objX][objY - 1]);
  74.             }
  75.            
  76.             if(objX > 0)
  77.             {
  78.                 if(tiles[objX - 1][objY - 1].isSolid)
  79.                 {
  80.                     result.add(tiles[objX - 1][objY - 1]);
  81.                 }
  82.             }
  83.            
  84.             if(objX < tiles.length - 1)
  85.             {
  86.                 if(tiles[objX + 1][objY - 1].isSolid)
  87.                 {
  88.                     result.add(tiles[objX + 1][objY - 1]);
  89.                 }
  90.             }
  91.         }
  92.        
  93.         if(objY < tiles[0].length - 1)
  94.         {
  95.             if(tiles[objX][objY + 1].isSolid)
  96.             {
  97.                 result.add(tiles[objX][objY + 1]);
  98.             }
  99.            
  100.             if(objX > 0)
  101.             {
  102.                 if(tiles[objX - 1][objY + 1].isSolid)
  103.                 {
  104.                     result.add(tiles[objX - 1][objY + 1]);
  105.                 }
  106.             }
  107.            
  108.             if(objX < tiles.length - 1)
  109.             {
  110.                 if(tiles[objX + 1][objY + 1].isSolid)
  111.                 {
  112.                     result.add(tiles[objX + 1][objY + 1]);
  113.                 }
  114.             }
  115.         }
  116.  
  117.         return result;
  118.     }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top