private void KeepinCenter(Vector3 targetPosition, Quaternion targetRotation, float targetZoom)
        {
//			Debug.Log ("target zoom "+ targetZoom);
            timeTransitionStart = Time.time;
            posTransitionStart  = Transform.position;
            rotTransitionStart  = Transform.rotation;
            zoomTransitionStart = MobileTouchCamera.CamZoom;
            rotTransitionEnd    = targetRotation;
            zoomTransitionEnd   = targetZoom;



            MobileTouchCamera.Transform.rotation = targetRotation;
            MobileTouchCamera.CamZoom            = targetZoom;
            Vector3 intersectionScreenCenterEnd = MobileTouchCamera.GetIntersectionPoint(MobileTouchCamera.Cam.ScreenPointToRay(new Vector3(Screen.width * 0.5f, Screen.height * 0.5f, 0)));
            Vector3 focusVector = targetPosition - intersectionScreenCenterEnd;

            posTransitionEnd = MobileTouchCamera.GetClampToBoundaries(posTransitionStart + focusVector, true);
            MobileTouchCamera.Transform.rotation = rotTransitionStart;
            MobileTouchCamera.CamZoom            = zoomTransitionStart;

            if (Mathf.Approximately(transitionDuration, 0))
            {
                SetTransform(posTransitionEnd, targetRotation, targetZoom);
                return;
            }

            isTransitionStarted = true;
        }
示例#2
0
        public void FocusCameraOnTarget(Vector3 targetPosition, Quaternion targetRotation, float targetZoom)
        {
            timeTransitionStart = Time.time;
            posTransitionStart  = Transform.position;
            rotTransitionStart  = Transform.rotation;
            zoomTransitionStart = MobileTouchCamera.CamZoom;
            rotTransitionEnd    = targetRotation;
            zoomTransitionEnd   = targetZoom;

            MobileTouchCamera.CamZoom            = targetZoom;
            MobileTouchCamera.Transform.rotation = targetRotation;
            Vector3 intersectionScreenCenterEnd = MobileTouchCamera.GetIntersectionPoint(MobileTouchCamera.Cam.ScreenPointToRay(new Vector3(Screen.width * focusScreenPos.x, Screen.height * focusScreenPos.y, 0)));
            Vector3 focusVector = targetPosition - intersectionScreenCenterEnd;

            posTransitionEnd = posTransitionStart + focusVector;

            NormalizePosAndRot(targetPosition, targetZoom, ref posTransitionEnd, ref rotTransitionEnd);


            posTransitionEnd = MobileTouchCamera.GetClampToBoundaries(posTransitionEnd, true);

            MobileTouchCamera.Transform.rotation = rotTransitionStart;
            MobileTouchCamera.CamZoom            = zoomTransitionStart;

            if (Mathf.Approximately(transitionDuration, 0))
            {
                SetTransform(posTransitionEnd, rotTransitionEnd, zoomTransitionEnd);
                return;
            }

            isTransitionStarted = true;
        }