Загрузка данных


void OnMouseUp()
{
    float deltaX = Input.mousePosition.x - curPointX;
    float deltaY = Input.mousePosition.y - curPointY;

    // Защита от обычного клика без свайпа (мертвая зона)
    if (Mathf.Abs(deltaX) < 2f && Mathf.Abs(deltaY) < 2f) 
        return; 

    // Определяем, был ли свайп в основном горизонтальным или вертикальным
    bool isHorizontalSwipe = Mathf.Abs(deltaX) > Mathf.Abs(deltaY);

    // Если машина горизонтальная и свайп был горизонтальным
    if (CarAxis == Axis.Horizontal && isHorizontalSwipe)
    {
        CarDirectionX = deltaX > 0 ? Direction.Right : Direction.Left;
        isClicked = true;
    }
    // Если машина вертикальная и свайп был вертикальным
    else if (CarAxis == Axis.Vertical && !isHorizontalSwipe)
    {
        CarDirectionY = deltaY > 0 ? Direction.Top : Direction.Bottom;
        isClicked = true;
    }
    // В противном случае свайп игнорируется (например, если горизонтальную машину потянули вверх)
}

void FixedUpdate()
{
    if (isClicked && FinalPosition.x == 0)
    {
        Vector3 whichWay = CarAxis == Axis.Horizontal ? Vector3.forward : Vector3.left;

        // Создаем локальную переменную скорости на этот кадр, 
        // чтобы не перезаписывать публичную переменную speed навсегда
        float currentSpeed = Mathf.Abs(speed);

        if (CarAxis == Axis.Horizontal && CarDirectionX == Direction.Left)
        {
            currentSpeed *= -1;
        }
        else if (CarAxis == Axis.Vertical && CarDirectionY == Direction.Bottom)
        {
            currentSpeed *= -1;
        }

        rb.MovePosition(rb.position + whichWay * currentSpeed * Time.fixedDeltaTime);
    }
}