В чём ошибка внутри этого кода?
В том, что после if должен идти блок кода, выполняющийся при валидности условия. У вас его там нет.
У вас ошибки указаны в сообщениях в студии:
1) Operator '<' cannot be applied to operand of type 'Vector2' and 'int'
direction - это Vector2, его нельзя сравнивать с числом. Нужно сравнивать direction.x < 0 или direction.y < 0 (или и то, и другое вместе, как вам нужно).
2) ; expected
После if должна быть инструкция, закончившаяся ; (или в фигурных скобках). У вас этого нет. 
И прислушайтесь советов Denis Gaydak! 
Если ещё можно написать такой код, как вы сделали, (хотя вы и не сделали :) ), то изменять его уже не получится - дольше времени разбираться с ним, чем исправлять. 
Сделайте такие методы: ProcessTouch(Touch touch), MoveFigureBy(int value), RotateFigure(), FallFigure() и их вызывайте в CheckUserInput(). Обратите внимание, что я в старте поместил ссылку на GameScript  в переменную GridObject. Это важно, потому что метод FindObjectOfType ресурсоёмкий, а у вас он вызывается несколько раз в каждом Update (то есть, десятки раз в секунду!).
Я позволил себе предложить вот такой код (я только исправил две ошибки, о которых вы говорили, и сделал рефакторинг):GameScript GridObject;

void Start()
{
	GridObject = FindObjectOfType<GameScript>();
}

void Update () 
{
    CheckUserInput();
}

void CheckUserInput()
{
    if (Input.touchCount > 0) ProcessTouch(Input.GetTouch(0));
    if (Input.GetKeyDown(KeyCode.RightArrow)) MoveFigureBy(1);
    if (Input.GetKeyDown(KeyCode.LeftArrow)) MoveFigureBy(-1);
    if (Input.GetKeyDown(KeyCode.UpArrow)) RotateFigure();
    if (Input.GetKeyDown(KeyCode.DownArrow) || Time.time - fall >= fallSpeed) FallFigure();
}

void ProcessTouch(Touch touch)
{
    if (touch.phase == TouchPhase.Began)
    {
        previousUnitPosition = new Vector2 (touch.position.x, touch.position.y);
    } else if (touch.phase == TouchPhase.Moved)
    {
        Vector2 touchDeltaPosition = touch.deltaPosition;
        direction = touchDeltaPosition.normalized;

        if (Mathf.Abs(touch.position.x - previousUnitPosition.x) >= touchSensitivityHorizontal && direction.x < 0 &&toucht.deltaPosition.y > -10 && touch.deltaPosition.y < 10) // на этой строке ошибка direction < 0
        {
            // что делать???
        }      
    } else if (touch.phase == TouchPhase.Ended)
    {

    }
}
void MoveFigureBy(int value)
{
    transform.position += new Vector3(value, 0, 0);
    if (CheckIsValidPosition()) 
    {
        GridObject.UpdateGrid(this);
    } else 
    {
        transform.position += new Vector3(-1 * value, 0, 0);
    }
}
void RotateFigure()
{
	if (allowRotation) 
    {
        if (limitRotation) 
        {
            if (transform.rotation.eulerAngles.z >= 90) {
                transform.Rotate(0,0,-90);
            } else 
            {
                transform.Rotate(0,0,90);
            }
        } else 
        {
            transform.Rotate (0,0,90);
        }
        if(CheckIsValidPosition()) 
        {
            GridObject.UpdateGrid(this);
        } else 
        {
            if (limitRotation) 
            {
                if (transform.rotation.eulerAngles.z >= 90) 
                {
                    transform.Rotate(0,0,-90);
                } else 
                {
                    transform.Rotate (0,0,90);
                }
            } else 
            {
              transform.Rotate (0,0,-90);
            }
        }
    }
}
void FallFigure()
{
    transform.position += new Vector3(0, -1, 0);
        
    fall = Time.time;

    if (CheckIsValidPosition()) 
    {
        GridObject.UpdateGrid(this);
    } else 
    {
          transform.position += new Vector3(0, 1, 0);
          GridObject.DeleteRow();
          if (GridObject.CheckIsAboveGrid (this))
          {
              GridObject.GameOver ();
          }
          enabled = false;
          GridObject.SpawnNextFigure();
    }
}