Esempio n. 1
0
    public T DirectionTo(TileIndex index, RectDirection direction, int distance)
    {
        int i = (int)direction;

        TileIndex o = new TileIndex(index.x + Directions[i].x * distance,
                                    (index.x + Directions[i].x * distance) * columns + index.z + Directions[i].z * distance,
                                    index.z + Directions[i].z * distance);

        return(TileAt(o));
    }
Esempio n. 2
0
 private IEnumerator moveRectangular()
 {
     rectDirection = RectDirection.Right;
     while (true)
     {
         bool end = true;
         switch (rectDirection)
         {
             case RectDirection.Left:
                 gameObject.transform.position = gameObject.transform.position + new Vector3(-step, 0, 0);
                 break;
             case RectDirection.Right:
                 gameObject.transform.position = gameObject.transform.position + new Vector3(step, 0, 0);
                 break;
             case RectDirection.Up:
                 gameObject.transform.position = gameObject.transform.position + new Vector3(0, step, 0);
                 break;
             case RectDirection.Down:
                 gameObject.transform.position = gameObject.transform.position + new Vector3(0, -step, 0);
                 break;
         }
         if ((gameObject.transform.position.x - startPosition.x >= deltaX) && (rectDirection == RectDirection.Right))
             rectDirection = RectDirection.Up;
         else
             if ((gameObject.transform.position.x <= startPosition.x) && (rectDirection == RectDirection.Left))
                 rectDirection = RectDirection.Down;
             else
                 if ((gameObject.transform.position.y - startPosition.y >= deltaY) && (rectDirection == RectDirection.Up))
                     rectDirection = RectDirection.Left;
                 else
                     if ((gameObject.transform.position.y <= startPosition.y) && (rectDirection == RectDirection.Down))
                         rectDirection = RectDirection.Right;
                     else
                         end = false;
         if (end)
             if (deltaY == 0)
             {
                 if (rectDirection == RectDirection.Up)
                     rectDirection = RectDirection.Left;
                 else
                     if (rectDirection == RectDirection.Down)
                         rectDirection = RectDirection.Right;
             }
             else
                 if (deltaX == 0)
                     if (rectDirection == RectDirection.Left)
                         rectDirection = RectDirection.Down;
                     else
                         if (rectDirection == RectDirection.Right)
                             rectDirection = RectDirection.Up;
             
         yield return new WaitForSeconds(time);
     }
 }
Esempio n. 3
0
 public T DirectionTo(T tile, RectDirection direction, int distance)
 {
     return(DirectionTo(tile.index, direction, distance));
 }
Esempio n. 4
0
 public T DirectionTo(Vector3 position, RectDirection direction, int distance)
 {
     return(DirectionTo(IndexOf(position), direction, distance));
 }
Esempio n. 5
0
 public T DirectionTo(int line, int column, RectDirection direction, int distance)
 {
     return(DirectionTo(IndexOf(line, column), direction, distance));
 }
Esempio n. 6
0
 public T DirectionTo(int index, RectDirection direction, int distance)
 {
     return(DirectionTo(IndexOf(index), direction, distance));
 }