示例#1
0
        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);
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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());
        }
示例#5
0
        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);
        }