using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; using UnityEngine.UIElements; public class CameraController : MonoBehaviour { public static CameraController instance; /// /// 禁止操作 /// //[HideInInspector] public bool ShieldingOperation; protected Quaternion myLocalAng; protected Vector3 myPos; /// /// 定位目标 /// protected Transform Target; /// /// 默认定位距离 /// protected float distance = 200; public float Distance => distance; public float eulerx; public float eulery; public float horizontal; public float vertical; public Vector2 XLimit = new Vector2(-500, 500); public Vector2 YLimit = new Vector2(5, 500); public Vector2 ZLimit = new Vector2(-500, 500); protected virtual void Awake() { instance = this; } protected virtual void Start() { } protected virtual void Update() { //if (Target != null) // Distance = Vector3.Distance(Target.position, transform.position); } protected void InitTransform() { //ShieldingOperation = true; myLocalAng = transform.rotation; horizontal = eulerx = myLocalAng.eulerAngles.y; vertical = eulery = myLocalAng.eulerAngles.x; if (vertical > 180) vertical -= 360; myPos = transform.position; } /// /// 设置相机位置 /// 开启自动漫游时设置 /// /// /// public void SetTransform(Vector3 position,Vector3 angle) { Target = null; transform.position = position; transform.eulerAngles = angle; InitTransform(); } /// /// 设置坐标及角度 /// /// /// public void SetTransform(Vector3 _position,Quaternion _rotation) { Target = null; transform.position = _position; transform.rotation = _rotation; InitTransform(); } /// /// 定位至目标 /// /// public void LocateToTarget(Transform target) { if (target == null) return; Target = target; ShieldingOperation = true; transform.DOMove((transform.rotation * Vector3.back * Distance + Target.position), 0.5f).OnComplete(() => { myPos = transform.position; ShieldingOperation = false; }); } }