У вас ошибки указаны в сообщениях в студии:
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();
}
}