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