72 lines
2.1 KiB
C#
72 lines
2.1 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using DG.Tweening;
|
|
|
|
public class AutoRoaming : MonoBehaviour
|
|
{
|
|
/// <summary>
|
|
/// 是否自动漫游
|
|
/// </summary>
|
|
public bool autoRoaming;
|
|
/// <summary>
|
|
/// 自动漫游旋转轴
|
|
/// </summary>
|
|
private Vector3 RotateAng = Vector3.up;
|
|
[Range(-10, 10), Tooltip("漫游速度")]
|
|
public float roamSpeed = 5;
|
|
[Range(0, 1), Tooltip("视角回正速度")]
|
|
public float ResetVisualSpeed = 0.5f;
|
|
|
|
private Vector3 RoamingPosition;
|
|
private Vector3 RoamingAngle;
|
|
|
|
private void Start()
|
|
{
|
|
RoamingPosition = Camera.main.transform.position;
|
|
RoamingAngle = Camera.main.transform.eulerAngles;
|
|
}
|
|
|
|
void LateUpdate()
|
|
{
|
|
if (autoRoaming)
|
|
transform.Rotate(RotateAng * roamSpeed * Time.deltaTime);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 开始漫游
|
|
/// </summary>
|
|
/// <param name="callback"></param>
|
|
/// <param name="onStartRoming">开始漫游后回调</param>
|
|
public void StartRoam(System.Action callback = null, System.Action onStartRoming = null)
|
|
{
|
|
if (autoRoaming) return;
|
|
callback?.Invoke();
|
|
int count = Camera.main.transform.DOKill();
|
|
Debug.Log("Kill count: " + count);
|
|
Camera.main.transform.DORotate(RoamingAngle, 0.4f);
|
|
Camera.main.transform.DOMove(RoamingPosition, 0.4f).OnComplete(() =>
|
|
{
|
|
autoRoaming = true;
|
|
CameraController.instance.SetTransform(RoamingPosition, RoamingAngle);
|
|
onStartRoming?.Invoke();
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
///<param name="reset">是否重置角度</param>
|
|
///<param name="callback"></param>
|
|
///<param name="onStopRoming">重置角度后回调</param>
|
|
public void StopRoam(bool reset = false, System.Action callback = null, System.Action onStopRoming = null)
|
|
{
|
|
if (!autoRoaming) return;
|
|
callback?.Invoke();
|
|
autoRoaming = false;
|
|
if (reset)
|
|
{
|
|
transform.DORotate(Vector3.zero, ResetVisualSpeed).OnComplete(() => { onStopRoming?.Invoke(); });
|
|
}
|
|
}
|
|
} |