1.功能背景
要求:对黄山园区的精细化建模建筑按照指定路径巡航。
2.解决方案
拟采用精准取点,确定巡航路径,存储机位点信息; 使用Dotween插件,按照巡航路径巡航。
3.方案实施
3.1 巡航路径规划
根据给定的路径,在路径上确定相机位点,并在该相机位点存储相机的坐标信息和欧拉角信息;
在相机巡航过程中,相机按照存储的位点坐标信息和欧拉角信息进行巡航。
3.2 插件-DoTween
3.3 功能实现
3.3.1 确定位点
首先,创建空物体,命名为CameraPoints,并分别创建YGZX_Points、GWHPoints、XLDZPoints三栋建筑的巡航机位点,如位点图所示;
3.3.2 绑定位点
其次,创建CameraXunYou脚本,具体代码如下:
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
using UnityEngine.InputSystem;
//获取所有规划的路径点
//相机按照路径点进行巡游,相机到达下一路径点后,再执行下一段路径巡游
public class CameraXunYou : MonoBehaviour
{
//定义巡航相机位置
private Transform cameraTransform;
//定义巡航路径点集合
public List<Transform> pathPoints = new List<Transform>();
private void Awake()
{
//获取场景中巡航相机
cameraTransform = GameObject.Find("Main Camera").transform;
}
void Start()
{
StartCameraCross(cameraTransform);
}
/// <summary>
/// 定义巡航方法,开启巡航协程
/// </summary>
/// <param name="objtransform">传入的是巡航对象</param>
public void StartCameraCross(Transform objtransform)
{
StartCoroutine("CameraCross", objtransform);
}
//关闭巡航协程
public void StopCameraCross()
{
StopCoroutine("CameraCross");
DOTween.KillAll(true);
}
//定义巡航协程
IEnumerator CameraCross(Transform objTransform)
{
if (objTransform != null)
{
for (int i = 1; i < pathPoints.Count; i++)
{
objTransform.DORotateQuaternion(Quaternion.Euler(pathPoints[i].rotation.eulerAngles), 5);
objTransform.DOMove(pathPoints[i].position, 5);
yield return new WaitForSeconds(7);
}
} //end cross
else
{
yield return null;
}
}
}
3.3.2 绑定位点
如上,位点绑定图所示,需要将位点图中位点的Transform信息和脚本CameraXunYou的位点集合进行按序绑定。
至此,相机的自动巡航功能开发完毕
4 功能展示视频
哔哩哔哩视频:Unity自动巡航_哔哩哔哩_bilibili
5 联系博主
vx:bg5541923353
qq:1030762097@qq.com
email:1030762097@qq.com