Hyluss icon

[Unity] Accurate pinch zoom

Hyluss | PRO | 05/30/19 10:57:48 PM UTC | 0 ⭐ | 499 👁️ | Never ⏰ | []
C# |

1.19 KB

|

None

|

0 👍

/

0 👎

 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);
 
        }

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎