Код:
public class TakeInput : MonoBehaviour {

    // Флаг, отвечающий за перетаскивание
    bool isDragging = false;

    void Update ()
    {
  // Проверяем, есть ли нажатия. Если нажатий нет, то выходим из функции.
  if (Input.touchCount < 1)
   return;
  
  // Получаем первое нажатие
  Touch _touch = Input.GetTouch (0);
  // Преобразуем координаты нажатия, делаем рейкаст и получаем коллайдер (если он есть)
  Vector2 touchPos = Camera.main.ScreenToWorldPoint (_touch.position);
  RaycastHit2D ray = Physics2D.Raycast (touchPos, Vector2.zero);
  Collider2D c2d = ray.collider;

  // Проверяем есть ли коллизия с Draggable объектом
  if (c2d != null && c2d.gameObject.tag == "Draggable") {
   // При начале касания - устанавливаем флаг isDragging
   if (_touch.phase == TouchPhase.Began)
    isDragging = true;
   // При завершении или прерывании касания - убираем флаг
   else if (_touch.phase == TouchPhase.Ended || _touch.phase == TouchPhase.Canceled)
    isDragging = false;
   // Если стоит флаг isDragging, то перемещаем объект
   if (isDragging)
    c2d.transform.position = touchPos;
  }
    }
}