Unity中使用Curvy快速生成路径,并使物体沿着路线运动

插件请见文件夹 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;
            }
        }

 

  • 14
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值