插件请见文件夹 Curvy Splines - 7.1.4.unitypackage
教学视频:https://www.bilibili.com/video/av31976398/
一、基础使用方法
①首先需要绘制控制物体移动的路径准备,如下所示:
②开始绘制路径,此时在Scene视图下,按下Ctrl+鼠标点击左键,则就会绘制出一个坐标点,然后选中出现的这个坐标点
进行复制,移动就会绘制车路径,需要绘制多长就复制几个拉开调整即可,如下所示:
③路径绘制好后,可以修改该路径的样式(默认是直线)等参数信息,如下所示:
Bezier为贝塞尔曲线,可以试试别的选项,调整路径是直的还是曲线。
④给需要实现跟随该绘制路径移动的物体添加控制脚本,如下所示:
SplineController 脚 本 添加到要移动的物体上。
⑤给该物体上的控制脚本添加路径,且修改该物体上的控制脚本参数,如下所示:
三、脚本使用控制方法
①首先引用两个命名空间:
using FluffyUnderware.Curvy;
using FluffyUnderware.Curvy.Controllers;
②获取路径方法
//注意我这里获取TotalTransportPath路径如下
TotalTransportPath.GetComponent<CurvySpline>();
③给物体指定控制脚本和路径的方法
/// <summary>
/// 给物体添加移动路径且进行基础参数设置
/// </summary>
/// <param name="obj">进行路径设置的物体</param>
/// <param name="objPath">物体移动的路径</param>
/// <param name="moveSpeed">物体移动的速度</param>
/// <param name="isDisableObj">是否禁用物体开关</param>
private void AddMovePathToObj(Transform obj,CurvySpline objPath,float moveSpeed=0,bool isDisableObj=false)
{
if (obj != null && objPath != null)
{
//首先判断货物是否有SplineController控制脚本
if (obj.GetComponent<SplineController>() == null)
{
obj.gameObject.AddComponent<SplineController>();
}
//然后给物体指定路径
obj.GetComponent<SplineController>().Spline = objPath;
//设置物体的移动模式
obj.GetComponent<SplineController>().Clamping = CurvyClamping.Clamp;
//设置物体的移动速度
obj.GetComponent<SplineController>().Speed = moveSpeed;
//是否禁用货物
obj.gameObject.SetActive(isDisableObj);
}
}
④如果想要运行起来是物体跟随路径移动则需要将速度设定为>0即可;暂停可以直接将速度设定为0即可。
⑤给物体在运行期间自动切换路径的方法如下:
/// <summary>
/// 给物体转换移动路径设置
/// </summary>
/// <param name="obj">进行路径设置的物体</param>
/// <param name="objPath">物体移动的路径</param>
/// <param name="moveSpeed">物体移动的速度</param>
/// <param name="duration">转换路径的时间</param>
private void ChangeMovePathToObj(Transform obj, CurvySpline objPath,float moveSpeed, float duration=60F)
{
if (obj!=null && objPath!=null)
{
//首先判断货物是否有SplineController控制脚本
if (obj.GetComponent<SplineController>() == null)
{
obj.gameObject.AddComponent<SplineController>();
}
//然后装换物体移动路径
obj.GetComponent<SplineController>().SwitchTo(objPath, 1, duration);
//设置物体的移动模式
obj.GetComponent<SplineController>().Clamping = CurvyClamping.Clamp;
//设置物体的移动速度
obj.GetComponent<SplineController>().Speed = moveSpeed;
}
}