Как сделать свайп плавнее
Здраствуйте! У меня есть объект, который нужно перемещать свайпом вверх-вниз(по y). Проблема заключается в том - что объект дёргается(После того, как я один раз свайп использовал(обьект остался там, где должен), второй раз когда я использую свайп - он дёргается, словно перемещается на какие-то координаты, возможно начальные). Эту тему с тапами, свайпами и т.п я совсем не понимаю. Как мне всё же сделать так, что бы оно не дёргалось?
Вот код:
[SerializeField] private Transform textTransform;
[SerializeField] private Vector2 startPos;
[SerializeField] private Vector2 directionPos;
private void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
switch (touch.phase)
{
case TouchPhase.Began: // Начало
startPos.y = touch.position.y; // Первый тап
break;
case TouchPhase.Moved: // Движение
directionPos.y = touch.position.y - startPos.y;
break;
}
textTransform.localPosition = new Vector2(0, directionPos.y); // Перемещение
}
}
Ответы (2 шт):
Автор решения: FiolDoll
→ Ссылка
[SerializeField] private Transform textTransform;
[SerializeField] private Vector2 startPos;
[SerializeField] private Vector2 directionPos;
private void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
switch (touch.phase)
{
case TouchPhase.Began: // Начало
startPos.y = textTransform.position.y; // Первый тап
break;
case TouchPhase.Moved: // Движение
directionPos.y = touch.position.y - startPos.y;
break;
}
textTransform.localPosition = new Vector2(0, directionPos.y); // Перемещение
}
}
Автор решения: aepot
→ Ссылка
Я бы сделал расчет смещения объекта относительно его начальной позиции, а не начальной позиции тача:
private float touchOffset;
private void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
switch (touch.phase)
{
case TouchPhase.Began:
touchOffset = touch.position.y - textTransform.localPosition.y;
break;
case TouchPhase.Moved:
textTransform.localPosition = new Vector2(0, touch.position.y - touchOffset);
break;
}
}
}