To smooth motion between frames, Time.deltaTime is usually used - this is the time during which the frame was processed. Well, apparently, you did not quite understand how interpolation works.
The Vector3.Lerp method returns the position from the starting point to the ending point according to t. However, t must be between 0 and 1, i.e. if you pass Vector3.Lerp(_startPos, _endPos, 0.5f); you will get a position exactly in the middle.
Thus t - you need to count and most often it is the ratio of the time that has passed from the beginning of the movement to the time for which your "character" has to go all the way.
I would suggest you use Vector3.MoveTowards . He takes from you two positions and the maximum offset that you allow him to make. In this case, you do not have to calculate the time and you can control the speed of the character. For example, like this:
[SerializeField] float _velocity = 10; void Update() { if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) transform.position = Vector3.MoveTowards(transform.position, _endPos, Time.deltaTime * _velocity); }
In this implementation, your character will move from its current position towards the target point until it reaches this point, or until you remove your finger from the screen.
Speed can be controlled by changing the _velocity variable.