예제 #1
0
        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);
        }
예제 #3
0
        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);
        }