Изменение размеров экрана двойным свайпом на android

Я хочу, чтобы размер изображенных на экране объектов, менялся при двойном свайпе. Под двойным свайпом я имею ввиду движение одним пальцем, например, влево, а другим вправо, тогда изображение должно уменьшаться.

Само уменьшение и увеличение я, конечно, реализую, а вот вызвать его надо при этом двойном свайпе.

У меня есть такая идея:

  1. В Update проверяем тачи
  2. Если имеем 2 тача, то просчитываем направление движения.
  3. Если движение происходит в противоположные стороны,
    • Если друг на друга - уменьшаем
    • Друг от друга - увеличиваем.

Но что, если будет 3 тача, и правильно ли вообще так делать? Может есть какой-то простой вариант? В Интернете о запросам изменение размеров свайпом, scale swipe и тому подобное я не нашел вариантов...

UPD1: Нашел вот такую картинку того, что я хочу: введите сюда описание изображения

Возможно, можно что-то нагуглить по запросу pinch и unpinch. Если что-то найду, опубликую ответ и отформатирую вопрос.


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

Автор решения: Yaroslav

Как-то так

[DisallowMultipleComponent]

public class Scaler : MonoBehaviour {

    [SerializeField] private Transform _scaleObject;
    private float _baseScale;
    private float _baseDistance;

    private void Update () {
        if (Input.touches.Length == 2) {
            switch (Input.touches[1].phase) {
                case TouchPhase.Began:
                    _baseScale = _scaleObject.localScale.x;
                    _baseDistance = Vector2.Distance(Input.touches[0].position, Input.touches[1].position);
                    break;
                case TouchPhase.Moved:
                    float CurrentDistance = Vector2.Distance(Input.touches[0].position, Input.touches[1].position);
                    float Rate = CurrentDistance/_baseDistance; // или на оборот
                    float Scale = _baseScale*Rate;
                    _scaleObject.localScale = new Vector3(Scale, Scale, Scale);
                    break;
            }
        }
    }
}
→ Ссылка