C# Unity. Как сделать плавное движение свайпом выделенного объекта на строгое количество шагов

Помогите решить задачу с перемещением в Unity. В общем на игровой 3D сцене необходимо плавно двигать кубы по оси X и Z. За один свайп куб должен переместиться только на один заданный шаг (переменная step), независимо от силы свайпа.

Игровая сцена

Вот кусок кода, отвечающего за перемещение по оси X:

void Update()
      {   
               if (Input.touchCount == 1)
                {
                    Touch screenTouch = Input.GetTouch(0);
                    if (screenTouch.phase == TouchPhase.Moved)     
                      
                  if (Mathf.Abs(screenTouch.deltaPosition.x) > 1)
                     {
                            targetPosition = transform.position 
                            targetPosition.x += step * Mathf.Sign(screenTouch.deltaPosition.x); 
                     }
                  }
       transform.position = Vector3.Lerp(transform.position, targetPosition, speed * Time.deltaTime);
      }
    

Но в моем коде объект движется все равно на разные расстояния.

И как лучше преобразовывать 2Д свайпы, если сцена выстроена в изометрической проекции. Иными словами, что бы диагональные свайпы воспринимались как горизонтальные.


Ответы (0 шт):