private void ApplyZoom(Vector2 pivot) { CheckOrigSize(); Vector2 prevPivot = SelfRectTransform.pivot; SelfRectTransform.ShiftPivot(pivot); SelfRectTransform.sizeDelta = origSize + Vector2.one * zoomedAmount; SelfRectTransform.ShiftPivot(prevPivot); }
private Vector2 GetTouchAsLocal(int touchIndex) { if (canvas == null) { canvas = SelfRectTransform.GetComponentInParent <Canvas>(); } Vector2 touchPos = Input.touches[touchIndex].position; Vector2 localTouch; if (canvas.renderMode == RenderMode.ScreenSpaceOverlay) { localTouch = touchPos.GetPositionRelativeTo(SelfRectTransform); } else { RectTransformUtility.ScreenPointToLocalPointInRectangle(SelfRectTransform, touchPos, canvas.worldCamera, out localTouch); } return(localTouch); }
private Vector2 CalculatePivot(Vector2 position) { Vector2 localScrollPoint; #region Calculating local position in rect transform if (canvas == null) { canvas = SelfRectTransform.GetComponentInParent <Canvas>(); } if (canvas.renderMode == RenderMode.ScreenSpaceOverlay) { localScrollPoint = position.GetPositionRelativeTo(SelfRectTransform); //Works for Overlay mode } else { RectTransformUtility.ScreenPointToLocalPointInRectangle(SelfRectTransform, position, canvas.worldCamera, out localScrollPoint); //Works for Camera mode } #endregion localScrollPoint = localScrollPoint.RemovePivotOffset(SelfRectTransform); Vector2 pointPivot = new Vector2(localScrollPoint.x / SelfRectTransform.rect.size.x, localScrollPoint.y / SelfRectTransform.rect.size.y); return(pointPivot); }