Я использовал эту логику для этого
if(Input.touchCount>0)
{
if(Input.GetTouch(0).phase==TouchPhase.Began)
{
dist=0f;
tm=0f;
speed=0f;
}
if(Input.GetTouch(0).phase==TouchPhase.Moved)
{
scrollPosition.y+=Input.GetTouch(0).deltaPosition.y;
dist+=Input.GetTouch(0).deltaPosition.y;
tm+=Time.deltaTime;
}
if(Input.GetTouch(0).phase==TouchPhase.Stationary)
{
dist=0f;
tm=0f;
}
if(Input.GetTouch(0).phase==TouchPhase.Ended)
{
if(tm>0)
speed=dist*0.01f/tm;
else
speed=0f;
}
}
else
{
if(speed>0)
{
speed-=moveValue;
}
else if(speed<0)
{
speed+=moveValue;
}
if(speed>-moveValue && speed<moveValue)
speed=0f;
scrollPosition.y+=speed;
}
А внутри OnGUI()
scrollPosition = GUI.BeginScrollView (new Rect (0f,150f,800f,480f),scrollPosition, new Rect (0f, 0f, 800f, 400f));
Используйте свою собственную Rect координату. Также см. docs
Нет никакого волшебного трюка, вам придется вручную закодировать логику * (или использовать GUI-библиотеку, которая сделает это за вас) * –