в принципе подход и мысли более менее верные.
единственное обычно надо бы брать не координату мыши или тача, а его отклонение.
смотря какая у вас механика..по нажатию или всегда..
условно если всегда,то смотрим какие у мыши координаты.
на сколько они от середины экрана.
размер экрана тоже знаем.
и вот вуаля..у нас есть 10 процентов вправо от середины..или 95 процентов от середины экрана влево.
отсюда мы берем коэффициент скорости. и направление)
условно от - 1 до 1. где (-1) = движемся максимально быстро влево. ,а 1 - соответственно вправо)
и выйдет что то вроде
transform.position = new Vector3( transform.position.x+SpeedFactor*Time.deltaTime*playerSpeed, transform.position.y, transform.position.z);
где SpeedFactor то самое направление от -1 до 1. а playerSpeed - просто дополнительный множитель для удобства контроля в редакторе вынесенный.
умножение на Time.deltaTime позволяет адекватно управлять. сгладить в независимости от частоты кадров)
если у вас было до этого "смещать на N пикселей каждый кадр".
то теперь будет равномерное "смещать на N пикселей в секунду", что куда удобнее воспринимается и адекватнее себя ведет))
а насчет движения. тут уже отдельная тема. если движется вперед силой, то в принципе можете пробовать двигать силлой добавляя еще одну вправо или влево.
но придется учесть что без трения и соприкосновения она сама не будет прекращать воздествовать)
так что когда ввода нет ли достигло края полосы(допустим границы экрана) вам ручками обрезать скорость боковую.
напрямую контролирую velocity у Rigitbody.
В принципе ничего не мешает и перемещение оставить так, просто меняя позицию. только просто заменить напрямую обращение к трансформу на
https://docs.unity3d.com/ScriptReference/Rigidbody...
почитайте в чем разница. в доке более менее все описанно)
надеюсь стало хоть чуток понятнее)))
как найти размер экрана. и прочее подобное по мелочи - погуглить думаю выйдет)
удачи.