Реализация зума изображения как инстаграме на Unity 2d C#
На сцене есть канвас, а в нём картинка. Как можно реализовать её масштабирование и перемещение по ней двумя пальцами как в инстаграме на unity C# (2d приложение)?
if (Input.touchCount == 2)
{
// Store both touches.
Touch touchZero = Input.GetTouch(0);
Touch touchOne = Input.GetTouch(1);
// Find the position in the previous frame of each touch.
Vector2 touchZeroPrevPos = touchZero.position - touchZero.deltaPosition;
Vector2 touchOnePrevPos = touchOne.position - touchOne.deltaPosition;
// Find the magnitude of the vector (the distance) between the touches in each frame.
float prevTouchDeltaMag = (touchZeroPrevPos - touchOnePrevPos).magnitude;
float touchDeltaMag = (touchZero.position - touchOne.position).magnitude;
// Find the difference in the distances between each frame.
float deltaMagnitudeDiff = (prevTouchDeltaMag - touchDeltaMag) / 100;
if (zoom.x <= 1 & deltaMagnitudeDiff > 0)
{
deltaMagnitudeDiff = 0;
}
if (zoom.x >= 3 & deltaMagnitudeDiff < 0)
{
deltaMagnitudeDiff = 0;
}
zoom = new Vector3(zoom.x -= deltaMagnitudeDiff, zoom.y -= deltaMagnitudeDiff, 1);
im.transform.localScale = zoom;
im.transform.localScale = zoom;
}
Код выше не подходит для этого, это просто увеличение картинки без возможности перемещения по ней, а также он работает не совсем корректно.
Картинка имеет положение по умолчанию, когда её масштабируют, она масштабируется пока два пальца на экране, и имеет возможность перемещаться, когда 1 или 2 пальца (ну, в общем-то, как в инстаграме), а когда пальцы отпускаются, картинка возвращается в исходное положение.