Ejemplo n.º 1
0
        /// <summary>
        /// 开启主相机绕指定点旋转 注意:不要设置在有自转的Transform下
        /// </summary>
        /// <param name="cameraRotateCenter">相机对准物体</param>
        /// <param name="speed"></param>
        public void StartCameraRotateWithCenter(Transform cameraCenter, float duration = 0.5f)
        {
            StopCameraRotateWithCenter();

            if (mainCamera == null)
            {
                mainCamera = MUtility.MainCamera;
            }

            cameraLookToCenter = cameraCenter.gameObject;

            tween =

                //朝向开启再旋转
                mainCamera.transform.DOLookAt(cameraLookToCenter.transform.position, duration).OnComplete(() =>
            {
                dragMouseOrbit = new DragMouseOrbit(cameraCenter, mainCamera.transform);

                EventCameraRotate.AddListener(RotateCameraToCenter);

                mBehaviour = new MBehaviour(ExecutionPriority.High);

                mBehaviour.OnUpdate_MBehaviour(() =>
                {
                    RotateCameraToCenter(inputPointPos);
                });


                isRotateCameraWithCenter = true;

                isRotateCameraWithCenterInitialization = true;

                RotateAndZoomManager.IsDone_StartCameraAroundCenter_Initialization = true;
            });
        }
Ejemplo n.º 2
0
        public void StartCameraRotateWithCenter(Transform cameraCenter, Vector3 camerainitialpos, Quaternion camerainitialqua, float duration = 0.5f)
        {
            StopCameraRotateWithCenter();

            if (mainCamera == null)
            {
                mainCamera = MUtility.MainCamera;
            }

            cameraLookToCenter = cameraCenter.gameObject;

            //开启初始化相机位置和角度

            tween =

                mainCamera.transform.DOMove(camerainitialpos, duration / 3);

            mainCamera.transform.DORotate(camerainitialqua.eulerAngles, duration / 3).OnComplete(() =>
            {
                mainCamera.transform.DOLookAt(cameraCenter.transform.position, duration / 3).OnComplete(() =>
                {
                    dragMouseOrbit = new DragMouseOrbit(cameraCenter, mainCamera.transform);

                    EventCameraRotate.AddListener(RotateCameraToCenter);

                    mBehaviour = new MBehaviour(ExecutionPriority.High);

                    mBehaviour.OnUpdate_MBehaviour(() =>
                    {
                        RotateCameraToCenter(inputPointPos);
                    });

                    isRotateCameraWithCenter = true;

                    isRotateCameraWithCenterInitialization = true;

                    RotateAndZoomManager.IsDone_StartCameraAroundCenter_Initialization = true;
                });
            });
        }