void Move()
    {
        if (IsFinishReached(wayChanger.Finish) || MovingUtils.IsWayBarricatedByWall(transform.position, direction))
        {
            wayChanger.TryChangeWay(FreeWays(), transform.position);
            if (wayChanger.IsWayChanged)
            {
                direction = GetVectorDirection(direction);
            }
        }
        else
        {
            direction = GetVectorDirection(direction);
        }

        transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime);
    }
    private List <Direction> FreeWays()
    {
        List <Direction> result = new List <Direction>();

        if (!MovingUtils.IsWayBarricatedByWall(transform.position, transform.up))
        {
            result.Add(Direction.up);
        }
        if (!MovingUtils.IsWayBarricatedByWall(transform.position, transform.up * -1.0f))
        {
            result.Add(Direction.down);
        }
        if (!MovingUtils.IsWayBarricatedByWall(transform.position, transform.right))
        {
            result.Add(Direction.right);
        }
        if (!MovingUtils.IsWayBarricatedByWall(transform.position, transform.right * -1.0f))
        {
            result.Add(Direction.left);
        }
        return(result);
    }
Beispiel #3
0
 void Move()
 {
     if (AnyButtonTap())
     {
         wayChanger.TryChangeWay();
     }
     if (MovingUtils.IsWayBarricatedByWall(transform.position, direction))
     {
         if (wayChanger.IsWayChanged)
         {
             direction = GetVectorDirection(direction);
         }
         else
         {
             direction = Vector3.zero;
         }
     }
     else
     {
         direction = GetVectorDirection(direction);
     }
     transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime);
 }