if (_Touches.Length == 2) { Vector2 _CameraViewsize = new Vector2(_Camera.pixelWidth, _Camera.pixelHeight); Touch _TouchOne = _Touches[0]; Touch _TouchTwo = _Touches[1]; Vector2 _TouchOnePrevPos = _TouchOne.position - _TouchOne.deltaPosition; Vector2 _TouchTwoPrevPos = _TouchTwo.position - _TouchTwo.deltaPosition; float _PrevTouchDeltaMag = (_TouchOnePrevPos - _TouchTwoPrevPos).magnitude; float _TouchDeltaMag = (_TouchOne.position - _TouchTwo.position).magnitude; float _DeltaMagDiff = _PrevTouchDeltaMag - _TouchDeltaMag; _Camera.transform.position += _Camera.transform.TransformDirection((_TouchOnePrevPos + _TouchTwoPrevPos - _CameraViewsize) * _Camera.orthographicSize / _CameraViewsize.y); _Camera.orthographicSize += _DeltaMagDiff * _OrthoZoomSpeed; _Camera.orthographicSize = Mathf.Clamp(_Camera.orthographicSize, _MinZoom, _MaxZoom) - 0.001f; _Camera.transform.position -= _Camera.transform.TransformDirection((_TouchOne.position + _TouchTwo.position - _CameraViewsize) * _Camera.orthographicSize / _CameraViewsize.y); }