GQ_Communicate/GQ_TongXin/Assets/Scripts/Camera/CameraMgr.cs

125 lines
2.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class CameraMgr : MonoSingleton<CameraMgr>
{
public CameraRT camera_Rt;
Vector3 originPos;
Vector3 originRot;
// [Header("业务视角点")]
public List<Transform> logicViewList = new List<Transform>();
private void Awake()
{
camera_Rt = GetComponent<CameraRT>();
}
public void SetOrigin()
{
originPos = Camera.main.transform.position;
originRot = Camera.main.transform.localEulerAngles;
}
public void GotoView(string viewName)
{
Transform viewTarget = logicViewList.Find(x => x.name == viewName);
camera_Rt.SetTarget(viewTarget);
}
public void GotoView(string viewName, float _distance)
{
Transform viewTarget = logicViewList.Find(x => x.name == viewName);
camera_Rt.SetTarget(viewTarget, _distance);
}
public void GotoView(Transform viewTarget, float _distance)
{
camera_Rt.SetTarget(viewTarget, _distance);
}
public void GotoView(Transform viewTarget, float _distance, Quaternion rotation, float TargetPos_dis = -1)
{
camera_Rt.SetTarget(viewTarget, _distance, rotation, TargetPos_dis);
}
[ContextMenu("test")]
public void test()
{
GotoView(new Vector3(9.67f, -2.43f, -13.5f), 5);
}
public void GotoView(Vector3 viewTarget, float _distance)
{
camera_Rt.SetTarget(viewTarget, _distance);
}
public void StoreTarget()
{
camera_Rt.StoreTarget();
}
public void ResumeView()
{
camera_Rt.ResumeTarget();
}
public void ReturnToMain()
{
Camera.main.transform.DORotate(originRot, 1);
Camera.main.transform.DOMove(originPos, 1);
}
#region
//[Header("漫游视角自动切换")]
//public bool autoChangeView = false;
//public float changeViewTimer;
//public List<Transform> autoChangeViewList;
//int index = 0;
//void ChangeView()
//{
// if (!autoChangeView)
// return;
// if (index > autoChangeViewList.Count - 1)
// {
// index = 0;
// ReturnToMain();
// return;
// }
// Camera.main.transform.position = autoChangeViewList[index].position;
// Camera.main.transform.localEulerAngles = autoChangeViewList[index].localEulerAngles;
// index++;
//}
//public void AutoChangeView_Open()
//{
// autoChangeView = true;
// CancelInvoke("ChangeView");
// InvokeRepeating("ChangeView", 15, 15);
//}
//public void AutoChangeView_Close()
//{
// autoChangeView = false;
//}
#endregion
}