diff --git a/GQ_TongXin/Assets/Scripts/Camera/CameraRT.cs b/GQ_TongXin/Assets/Scripts/Camera/CameraRT.cs index a45a5d479..c324a7c05 100644 --- a/GQ_TongXin/Assets/Scripts/Camera/CameraRT.cs +++ b/GQ_TongXin/Assets/Scripts/Camera/CameraRT.cs @@ -128,12 +128,17 @@ public class CameraRT : MonoBehaviour float init_y; bool auto_move; + float dotween_duration = 1f; + /// /// 全景视角 /// public void InitPanoramic() { auto_move = true; + + DOTween.Kill(transform, false); + DOTween.Kill(cameraTransform, false); //target.position = target_init_position; //target.rotation = target_init_rotation; @@ -159,14 +164,14 @@ public class CameraRT : MonoBehaviour distance = 20; - DOTween.To(() => x, (v) => x = v, init_x, 0.5f); - DOTween.To(() => y, (v) => y = v, init_y, 0.5f); + DOTween.To(() => x, (v) => x = v, init_x, dotween_duration); + DOTween.To(() => y, (v) => y = v, init_y, dotween_duration); - DOTween.To(() => cam.transform.position, (v) => cam.transform.position = v, camera_init_position, 0.5f); - DOTween.To(() => cam.transform.eulerAngles, v => cam.transform.eulerAngles = v, camera_init_eulerAngles, 0.5f); + DOTween.To(() => cam.transform.position, (v) => cam.transform.position = v, camera_init_position, dotween_duration); + DOTween.To(() => cam.transform.eulerAngles, v => cam.transform.eulerAngles = v, camera_init_eulerAngles, dotween_duration); - DOTween.To(() => target.position, v => target.position = v, target_init_position, 0.5f); - DOTween.To(() => target.eulerAngles, v => target.eulerAngles = v, target_init_eulerAngles, 0.5f).OnComplete(() => { auto_move = false; }); + DOTween.To(() => target.position, v => target.position = v, target_init_position, dotween_duration); + DOTween.To(() => target.eulerAngles, v => target.eulerAngles = v, target_init_eulerAngles, dotween_duration).OnComplete(() => { auto_move = false; }); } /// @@ -175,6 +180,8 @@ public class CameraRT : MonoBehaviour public void InitBirds_Eye() { auto_move = true; + DOTween.Kill(transform, false); + DOTween.Kill(cameraTransform, false); Array.ForEach(GameObject.FindObjectsOfType(), itme => { itme.My_magnifyState = false; @@ -192,14 +199,14 @@ public class CameraRT : MonoBehaviour distance = 10; - DOTween.To(() => x, (v) => x = v, 110, 0.5f); - DOTween.To(() => y, (v) => y = v, 15, 0.5f); + DOTween.To(() => x, (v) => x = v, 110, dotween_duration); + DOTween.To(() => y, (v) => y = v, 15, dotween_duration); - DOTween.To(() => cam.transform.position, (v) => cam.transform.position = v, new Vector3(1, 2.8f, -7.5f), 0.5f); - DOTween.To(() => cam.transform.eulerAngles, v => cam.transform.eulerAngles = v, new Vector3(15, 110, 0), 0.5f); + DOTween.To(() => cam.transform.position, (v) => cam.transform.position = v, new Vector3(1, 2.8f, -7.5f), dotween_duration); + DOTween.To(() => cam.transform.eulerAngles, v => cam.transform.eulerAngles = v, new Vector3(15, 110, 0), dotween_duration); - DOTween.To(() => target.position, v => target.position = v, new Vector3(10.2f, 0.2f, -11), 0.5f); - DOTween.To(() => target.eulerAngles, v => target.eulerAngles = v, new Vector3(0, 110, 0), 0.5f).OnComplete(() => { auto_move = false; }); + DOTween.To(() => target.position, v => target.position = v, new Vector3(10.2f, 0.2f, -11), dotween_duration); + DOTween.To(() => target.eulerAngles, v => target.eulerAngles = v, new Vector3(0, 110, 0), dotween_duration).OnComplete(() => { auto_move = false; }); } public Vector3 resume_position; @@ -378,9 +385,14 @@ public class CameraRT : MonoBehaviour } } + bool is_on_ui; void Rotate() { - if (Input.GetMouseButton(1)) + if (Input.GetMouseButtonDown(1)) + { + is_on_ui = EventSystem.current.IsPointerOverGameObject(); + } + if (Input.GetMouseButton(1)&&!is_on_ui) { // 判断是否需要反向旋转 @@ -401,6 +413,9 @@ public class CameraRT : MonoBehaviour void Scroll() { + if (EventSystem.current.IsPointerOverGameObject()) + return; + distance -= Input.GetAxis("Mouse ScrollWheel") * mSpeed_scale; distance = Mathf.Clamp(distance, minDistance, maxDistance);