public static Direction PossiblePositionToDirection(possiblePositions p) { switch (p) { case possiblePositions.CEILING: return(Direction.DOWN); case possiblePositions.GROUND: return(Direction.UP); case possiblePositions.LEFT: return(Direction.LEFT); default: return(Direction.RIGHT); } }
public static float groundPositionToZRotation(possiblePositions pos) { switch (pos) { case possiblePositions.CEILING: return(180.0f); case possiblePositions.LEFT: return(90.0f); case possiblePositions.RIGHT: return(-90.0f); default: return(0.0f); } }
public static Vector2 possiblePositionsToVector(possiblePositions pos) { switch (pos) { case possiblePositions.CEILING: return(Vector2.up); case possiblePositions.GROUND: return(Vector2.down); case possiblePositions.LEFT: return(Vector2.right); // its not a mistake case possiblePositions.RIGHT: return(Vector2.left); default: return(Vector2.zero); } }
public static Ground GetWall(Vector2 from, possiblePositions pos) { Vector2 direction = possiblePositionsToVector(pos); RaycastHit2D[] rays; rays = Physics2D.RaycastAll(from, direction); foreach (RaycastHit2D hit in rays) { if (hit.collider.tag == "Ground") { return(hit.collider.GetComponent <Ground>()); } } return(new Ground()); }
public static Vector2 GetWallPosition(Vector2 from, possiblePositions pos = possiblePositions.GROUND) { Vector2 direction = possiblePositionsToVector(pos); RaycastHit2D[] rays; rays = Physics2D.RaycastAll(from, direction); foreach (RaycastHit2D hit in rays) { if (hit.collider.tag == "Ground") { return((direction == Vector2.down || direction == Vector2.up) ? new Vector2(hit.point.x, hit.point.y) : new Vector2(hit.point.x, hit.point.y)); } } return(GROUND_NOT_FOUND); }