Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * get neighboring tiles of the centre of the entity.
- * calls getCollisionTiles(x,y)
- *
- * @param obj
- * @return
- */
- public Array<Tile> getCollisionTiles(Entity obj)
- {
- return getCollisionTiles((int)(obj.getX() + obj.getWidth() / 2),
- (int)(obj.getY() + obj.getHeight() / 2));
- }
- public Array<Tile> getCollisionTiles(Rectangle rect)
- {
- return getCollisionTiles
- ((int)(rect.x + rect.width / 2),
- (int)(rect.y + rect.height / 2));
- }
- /**
- * Pass X & Y world coordinates, returns surrounding tiles.
- *
- * - Pick the tile that the point is in.
- * - returns adjacent tiles + current tile in an Array
- *
- * used to get surrounding tiles for collision detection
- *
- *
- * @param x
- * @param y
- * @return adjacent tiles relative to point XY
- */
- public Array<Tile> getCollisionTiles(int x, int y)
- {
- Array<Tile> result = new Array<Tile>(9);
- int objX = x / Tile.SIZE;
- int objY = y / Tile.SIZE;
- if(objX < 0) objX = 0;
- if(objX > tiles.length - 1) objX = tiles.length - 1;
- if(objY < 0) objY = 0;
- if(objY > tiles[0].length - 1) objY = tiles[0].length - 1;
- if(tiles[objX][objY].isSolid)
- {
- result.add(tiles[objX][objY]);
- }
- if(objX > 0)
- {
- if(tiles[objX - 1][objY].isSolid)
- {
- result.add(tiles[objX - 1][objY]);
- }
- }
- if(objX < tiles.length - 1)
- {
- if(tiles[objX + 1][objY].isSolid)
- {
- result.add(tiles[objX + 1][objY]);
- }
- }
- if(objY > 0)
- {
- if(tiles[objX][objY - 1].isSolid)
- {
- result.add(tiles[objX][objY - 1]);
- }
- if(objX > 0)
- {
- if(tiles[objX - 1][objY - 1].isSolid)
- {
- result.add(tiles[objX - 1][objY - 1]);
- }
- }
- if(objX < tiles.length - 1)
- {
- if(tiles[objX + 1][objY - 1].isSolid)
- {
- result.add(tiles[objX + 1][objY - 1]);
- }
- }
- }
- if(objY < tiles[0].length - 1)
- {
- if(tiles[objX][objY + 1].isSolid)
- {
- result.add(tiles[objX][objY + 1]);
- }
- if(objX > 0)
- {
- if(tiles[objX - 1][objY + 1].isSolid)
- {
- result.add(tiles[objX - 1][objY + 1]);
- }
- }
- if(objX < tiles.length - 1)
- {
- if(tiles[objX + 1][objY + 1].isSolid)
- {
- result.add(tiles[objX + 1][objY + 1]);
- }
- }
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement