Hyluss

[Unity] Accurate pinch zoom

May 30th, 2019
533
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.19 KB | None | 0 0
  1.  if (_Touches.Length == 2)
  2.         {
  3.             Vector2 _CameraViewsize = new Vector2(_Camera.pixelWidth, _Camera.pixelHeight);
  4.  
  5.             Touch _TouchOne = _Touches[0];
  6.             Touch _TouchTwo = _Touches[1];
  7.  
  8.             Vector2 _TouchOnePrevPos = _TouchOne.position - _TouchOne.deltaPosition;
  9.             Vector2 _TouchTwoPrevPos = _TouchTwo.position - _TouchTwo.deltaPosition;
  10.  
  11.             float _PrevTouchDeltaMag = (_TouchOnePrevPos - _TouchTwoPrevPos).magnitude;
  12.             float _TouchDeltaMag = (_TouchOne.position - _TouchTwo.position).magnitude;
  13.  
  14.             float _DeltaMagDiff = _PrevTouchDeltaMag - _TouchDeltaMag;
  15.  
  16.             _Camera.transform.position += _Camera.transform.TransformDirection((_TouchOnePrevPos + _TouchTwoPrevPos - _CameraViewsize) * _Camera.orthographicSize / _CameraViewsize.y);
  17.  
  18.             _Camera.orthographicSize += _DeltaMagDiff * _OrthoZoomSpeed;
  19.             _Camera.orthographicSize = Mathf.Clamp(_Camera.orthographicSize, _MinZoom, _MaxZoom) - 0.001f;
  20.  
  21.             _Camera.transform.position -= _Camera.transform.TransformDirection((_TouchOne.position + _TouchTwo.position - _CameraViewsize) * _Camera.orthographicSize / _CameraViewsize.y);
  22.  
  23.         }
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment