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