RebyataYaNeShary, Цитата RebyataYaNeShary (

)
У меня почему то не работает.
А с мышкой работает?
Цитата RebyataYaNeShary (

)
А что можно использовать пооптимальнее, не подскажете?
Оптимальней будет работать непосредственно с Touch-классом. Что-то вроде того:
Код
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;
}
}
}
Данный скрипт необходимо поместить в какой-нибудь вспомогательный объект, например, обработчик нажатий и ввода, либо какой-нибудь Manager. На крайний случай - на саму камеру. Сами же объекты, которые необходимо перетаскивать, должны иметь какой-нибудь Collider2D и, в данном случае, тэг "Draggable".
В общем, это один из вариантов реализации, скажем, отправная точка - а дальше уже сами: допиливать, дорабатывать и тестировать.