一、前言
关于路线插件,Unity商店有一个简单好用且免费插件——Bézier Path Creator (https://assetstore.unity.com/packages/tools/utilities/b-zier-path-creator-136082)。可以支持路径运行和路线物体排序。使用比较简单这里就不过多介绍,这里主要讲的是另一款更强大的路线插件——Curvy Spline (https://assetstore.unity.com/packages/tools/utilities/curvy-splines-7038)。当然这是一款收费插件,我改用Curvy Spline 的重要原因是它拥有Bézier Path Creator没有的两个重要功能(其实多出的远不止两个功能)。一个是它支持动态生成mesh;二是分叉路线切换运行。但Curvy Spline一个很大缺点就是学习上手成本比较大。这次讲讲他的主要使用。
二、Curvy Spline使用
(一) 路线编辑
导入插件后再Scene窗口会多出及个工具菜单
其中Create里的Shape是几个插件内置的路线图形,
而旁边的Generator则是一个蓝图编辑工具编辑工具
DrawSpline就是我们路线点绘制工具
如图可以选择不同平面进行绘制,按住Ctrl键然后在Scene中即可用鼠标点击绘制
同时会在Hierachy窗口生成相应的元素对象
插值模式中我们最常用的应该是贝塞尔曲线,选择的贝塞尔曲线就可以很灵活的在每个贵点点进行曲度编辑
(二)动态Mesh生成
首先要创建打开编辑蓝图
右键点击添加Shap Extrusion
构成动态mesh的4个基本块如下:
形成的mesh效果如下
一个mesh中也可以使用多个材质球,首先要在蓝图的ShapeExtrusion勾选材质和展UV,还要在Volume里再添加一个材质球,然后材质球就有默认的编号Mat0,Mat1。
最后在对应的形状节点选择需要使用的材质ID,以及使用位置,相当于分UV.
我这里使用了一个金属材质和全透明材质
(三) 排序模型
添加排序模型需要增加如下3个蓝图组件
效果如下
再增加一个物体排序
(四)路线运动
需要让物体沿轨迹运动,挂上SplineController脚本即可
实现路径岔道运行,则需要先把两条路径的点连接起来,选中两点,然后点击菜单工具的Connect即可
然后再在运动物测上挂一个代码
public class SplineTest : MonoBehaviour
{
public SplineController splineController;
void Start()
{
//运行到每个节点触发
splineController.OnControlPointReached.AddListenerOnce(OnCPReached);
}
private void OnCPReached(CurvySplineMoveEventArgs arg0)
{
//切换一条路径
splineController.ConnectionBehavior = SplineControllerConnectionBehavior.RandomSpline;
Debug.Log(arg0.ControlPoint);
}
}
这样就能在运动到交叉节点切换路线了。