@废话在前

Curvy是一个非常强大的第三方插件,用于在unity中快速生成游戏轨道,关于此插件的教程网上几乎找不到,官方的视频教程是一个讲法式英语的人讲的,不但视频模糊让人听的简直爆炸,我反正听了一半差点砸电脑了,最后主要还是靠折腾demo结合视频把主要的用法弄明白了。这里结合官方demo中的几个介绍这个插件的用法,其实很简单,学会后可以轻松拖出一条甚至多条复杂的轨迹,然后可以让物体沿着轨迹运动,更强大的是可以在轨迹上动态生成相应的赛道和轨道,可以控制刚体在轨道上自由运动。

Unity资源商店的curvy插件链接(有视频教程和相应论坛):https://www.assetstore.unity3d.com/cn/#!/content/7038

先上几张官方demo炫酷效果的高清截图:

(1) 第一张图是官方demo的第一个SplineController.sence,展示了飞行器扰简单的圆轨迹循环运动;

(2) 第二张图展示了生成轨迹并声称轨迹对应的轨道,飞行器沿轨迹在轨道内穿梭;
(3) 第三张图展示了生成轨迹轨道,并控制一个刚体在轨道上自由滚动;

一、导入插件

在工程中选择custom package,导入curvy插件,我这里有个v2.0.2版本的curvy插件供下载,这是个付费插件,还挺贵的,免费送大家: https://pan.baidu.com/s/1i4SYJHV 如果下载不了请回复邮箱地址我发给您。

导入插件后可看到一个packages的文件夹里面有以下内容,其中有很多demo场景:

可以运行demo看一下可以实现那些效果,还是很炫酷的。

二、制作Spline运动轨迹

1.新建一个场景,会发现导入插件后工程中的场景scene窗口出现一些操作按钮:


2.生成轨迹


最快的方法就是直接点击scene场景中上面按钮的最后一个Draw Spline按钮,然后选择轨迹的方向,一般选择第二个y轴朝上。选择后会有提示 通过按住control键然后在scene场景中添加控制点,可以添加多个控制点,可以拖动控制点改变生成轨迹的形状,与此同时会发现project面板中已经生成了相应的元素:轨迹和轨迹下的控制点;

控制点之间的插值有三种选择,linear线性插值就是控制点之间用直线链接,另外还有两种曲线插值必入塞北尔曲线,根据需要进行选择;

控制点生成的曲线轨迹可以选择闭合或不闭合;

3.添加沿轨迹运动的游戏物体

轨迹制作好后现在添加沿轨迹运动的游戏物体,比如最简单的添加一个圆球。插件demo中提供了一个绑定物体和spline轨迹对象的脚本,在project面板搜索splinecontroller脚本,拖动到圆球物体上,然后将上面制作好的curvy spline拖动赋给splinecontroller中的变量进行绑定,同时设置一下运动速度speed,默认是0看不到效果,然后运行一下就可以看到圆球沿着轨迹开始移动了。当然这个脚本的功能是可以自定义的,继承自curvycontroller脚本。

三、根据Spline轨迹生成封闭运动轨道(重点来了,generator的使用!)

上面只是利用spline轨迹控制物体运动,但实际上有了这条轨迹数据,我们可以生成相应的跑道,赛道等等,甚至可以利用这条轨迹数据生成任何想要的轨迹形状的物体场景。

轨道的生成此插件提供了一个generator编辑器,在spline轨迹提供形状数据的基础上,添加材质数据模块,轨道横截面编辑模块来自由控制赛道的形状状态和材质。

1.新建generator组件

首先右键(最好就在curvy spline下新建作为子物体了) -->curvy --> generaotr新建一个generaotr对象,当然也可以点击sence窗口中的按钮新建,此时generator下是空的,鼠标选中generator后,会发现sense窗口出现了edit按钮,点击edit打开generaotr编辑窗口;

由于generator还是空的,所以编辑窗口空空如也,此时右键添加一个基本的shape extrusion模板,会发现编辑窗口出现了五个逻辑连接的小窗口,同时会到hierarchy窗口会发现generator对象下出现了相应的子物体,现在就可以进行编辑轨道了;

2.轨道的轨迹形状绑定

新建模板后会发现从input spline path链接出来的窗口标题是红色的,那是因为后面的三个窗口都用到了第一个窗口的path轨迹数据来生成轨道,由于还没有绑定轨迹所以红色警告。将之前做好的spline轨迹对象拖到input spline path面板对应的引用上即可,

也可以在hierarchy窗口拖入绑定,两边可以相互结合对应来设置调整;

3.轨道横截面设置

有了轨迹数据后便有了制作轨道的轨迹形状,现在通过input spline shape来制作轨道的横截面。横截面的制作方法和spline的轨迹类似,可以是闭合的中空曲线截面,也可以是开放的。横截面可以选择已有的规则形状,比如:圆形,矩形等等,设置相应的控制点个数,半径大小等等,也可以选中freedom来通过多个控制点来制作自由曲线横截面;

通过移动横截面控制点的位置来调整横截面的形状,控制点可以通过contrl+d来复制添加,横截面是一个平面图形,所以一般在2d模式下设置,

编辑时最好在show gizmos打勾显示横截面形状方便编辑:

  

注意:横截面曲线只有它的形状对轨迹起作用,其位置在哪里无任何影响。


4.轨道材质设置

轨道的材质通过volme mesh对象来设置,可以添加多个材质,选中mat0,更改材质即可:

      

注意:上面的设置改变后不会立刻看到效果,需要运行工程或者轻微调整spline轨迹的控制点来出发轨道的更新显示。

如下图是一个横截面闭合的简单管道型的中空轨道:

@扩展:实际上可以利用一条spline轨迹,在同一个generator下添加其下的多个模板组建,通过多个横截面组合更复杂的轨道横截面形状。

四、生成开放轨道和自由运动的刚体

这里只做一个开放的轨道,并制作一个可以自由运动的刚体在开放轨道上自由活动,也就是文章开始截图三足球在轨道上滚动的效果,插件中rigidbody demo提供了展示。

这时需要将横截面做成一个凹槽状,从而只做一个凹槽轨道,另外可以通过还没有用过的其他两个面板来调整轨道的形态,而不是宽度始终一致粗细均匀,可以让轨道岁曲线粗细变化显得更自然。然后添加一个自由运动的刚体测试轨道。


五.实时计算物体与spline轨迹最近的点坐标

插件提供函数用来计算场景中spline轨迹上离某个物体最近的点,通过这个点可以计算物体偏离轨道的程度。比如竞速游戏可以实现实时计算赛车偏离轨道的距离,还可以通过轨道上最近的点坐标对赛车进行复位,使其回到轨道上。此功能插件的NearestPoint的demo中有展示。

实时获取最近点的方法如下:

public CurvySpline Spline; // spline轨迹对象
public transform target; //计算偏离的物体,比如赛车if (Spline && Spline.IsInitialized && target) //保证spline和target存在
{// 将target的坐标转换到spline所在的本地坐标系var targetPos = Spline.transform.InverseTransformPoint(target.position);// 获得target在spline上的最近点的TF值float nearestTF=Spline.GetNearestPointTF(targetPos);// 转换到世界坐标系的spline上最近点的坐标值var nearestPos = Spline.transform.TransformPoint(Spline.Interpolate(nearestTF));
}

记得在脚本中添加curvy的namespace。

使用第三方插件Curvy为unity场景快速生成运动轨迹与赛道相关推荐

  1. Unity插件 FogOfWord教程 1分钟快速生成战争迷雾(2D/3D)

    前言 官网地址:点击前往 学习版插件下载地址:点击前往 笔记OneNote下载:点击前往 简介 1分钟上手 导入,然后找到脚本文件的位置 主镜头,绑个这个脚本 玩家身上绑上这个 怪物身上绑这个(迷雾隐 ...

  2. ThingMap一键城市2.0重新出发:快速生成三维城市

    在城市级可视化项目中,一般需要可视化的三维地图作为承载各种应用的载体,但大家在使用三维地图的过程中经常碰到3道难题:1.资源获取不便2.操作使用复杂3.模型效果不理想.为了降低三维地图的获取和使用难度 ...

  3. Dialogue System for Unity文档中英对照版(简雨原创翻译)第五篇(第三方插件拓展)

    接续上面,很遗憾这里开始讲一些第三方插件的使用了,但是我们手头没有这些收费的东东,只可以去官网看下在线的运行效果(国内谁买个全套的,分享下呀) 官网地址在这里 To set up and play t ...

  4. 零门槛一键生成PPT,利用人工智能快速提高办公效率(无需第三方插件)

    人工智能技术的发展正以惊人的速度改变着我们的世界,今天给大家介绍下利用ChatGPT快速生成PPT的方法,它能够帮助你一键生成PPT内容和漂亮的PPT文档,无需繁琐的设计和排版,只需要与ChatGPT ...

  5. Unity场景素材导出为 FBX文件的方法

    系列文章目录 一.Unity场景素材导出为 FBX文件的方法:http://t.csdn.cn/Xyjxe 二.Unity场景素材导出为 OBJ文件的方法:http://t.csdn.cn/08RY3 ...

  6. 【游戏开发教程】Unity Cinemachine快速上手,详细案例讲解(虚拟相机系统 | 新发出品 | 良心教程)

    文章目录 一.前言 二.插件下载 三.案例1:第三人称自由视角,Free Look character场景 1.场景演示 2.组件参数 2.1.CinemachineBrain:核心 2.2.Cine ...

  7. 【游戏开发教程】Unity Cinemachine快速上手,详细案例讲解(虚拟相机系统 新发出品 良心教程)

    文章目录 一.前言 二.插件下载 三.案例1:第三人称自由视角,Free Look character场景 1.场景演示 2.组件参数 2.1.CinemachineBrain:核心 2.2.Cine ...

  8. 【分享】Web前端开发第三方插件大全

    收集整理了一些Web前端开发比较成熟的第三方插件,分享给大家. ******************************************************************** ...

  9. 将谷歌浏览器 Chrome 已安装的插件打包成 crx 给其它电脑离线安装 +【怎么安装Chrome插件】安装Chrome第三方插件

    转载:将谷歌浏览器 Chrome 已安装的插件打包成 crx 给其它电脑离线安装 转载: [怎么安装Chrome插件]安装Chrome第三方插件 环境: OS - win7 64bit 旗舰版 Chr ...

  10. 短链接如何快速生成?短链接的应用场景有哪些?

    当我们的手机收到一串密密麻麻的长链接时,相信绝大多数人都没有点开它的欲望.因此将较长的链接缩成短连接,是营销过程中的一个重要手段.短链接可以将冗长的网址进行精简,长度只有原来的三分之一甚至四分之一,不 ...

最新文章

  1. Android ListView 滚动翻页效果
  2. python music21将音符转为mid格式音乐
  3. ADO.NET复习——自己编写SqlHelper类
  4. Hp linux tar 解压,tar命令的用法(百度)(HP_UX)
  5. 文件传输:二进制文件传输与文本传输(file transfer)
  6. 自动装配——@Autowired 构造器,参数,方法,属性都是从容器中获取参数组件的值||自定义组件想要使用Spring容器底层的一些组件 ApplicationContext,BeanFactory
  7. [云炬创业基础笔记]第六章商业模式测试24
  8. 第一部分 Java:面向对象理解
  9. HexorBase 登陆、执行语句、数据库帐号密码破解
  10. Unity中Android API 28之后无法HTTP请求
  11. DSP之直接存储器访问控制器
  12. css木马式自动轮播,基于jQuery实现自动轮播旋转木马特效_jquery
  13. ati 缺少关键性文件_win10重装系统缺少计算机所需的介质驱动程序的解决方法
  14. 2022高压电工考试试题及在线模拟考试
  15. minkowski sum matlab,Matlab 聚类分析
  16. MySQL随机生成六位数验证码
  17. 【python爬虫】反反爬之破解js加密--入门篇:谷歌学术镜像搜索(scmor.com)
  18. TCP-面向连接的、可靠的、基于字节流的 传输层通信协议
  19. 【特征工程】Chap3 Text Data: Flatten, Filtering, Chunking
  20. STM32_SPI通信_与传感器芯片通信的SPI优化之路

热门文章

  1. 计算机毕设中期检查表怎么写,[毕业论文中期检查表(精选多篇)] 毕业论文中期检查表怎么写...
  2. 单总线CPU微程序条件判别测试逻辑
  3. java电子小词典课程设计,java课程设计---英汉电子词典
  4. SharpShooter Reports.Web 7.5 Crack
  5. html跳转到添加qq好友,浏览器点击链接跳转qq添加好友的实现方式
  6. 详解IT服务管理(ITSM)流程五阶段
  7. DirectShow之音频录制Wav
  8. 微软官宣 Windows 11:全新 UI、原生支持安卓 App、应用商店 0 抽成
  9. lumaQQ.net 学习分析
  10. VARCHART XGantt 甘特图中的日期和夏令时