Unity——拖尾特效

拖尾是一种很酷的特效。拖尾的原理来自人类的视觉残留:观察快速移动的明亮物体,会看到物体移动的轨迹。摄像机通过调整快门时间,也可以拍出具有拖尾效果的照片,如在城市的夜景中,汽车的尾灯拖曳出红色的线条。

在较老的Unity版本中,拖尾效果需要用插件实现。现在Unity已经内置了Trail Renderer(拖尾渲染器)组件,可以方便地制作出拖尾效果。

拖尾渲染器组件的使用比较简单,其步骤如下。

  1. 新建一个球体,为其添加Trail Renderer组件
  2. 不需要运行游戏,直接在场景中改变球体的位置,就会看到拖尾效果。但由于没有指定拖尾材质,显示是紫红色(紫红色代表材质错误或缺失)。
  3. 在Trail Renderer组件中找到找到Materials选项,展开该选项,可以指定材质的数量和材质资源。如果已经导入粒子特效素材,那么通过搜索“Trail”可以找到多个拖尾专用的素材,任意选一个即可
  4. 选择材质,再拖曳物体,就会看到拖尾效果

 如图为Sparks的效果

 

 要让拖尾达到较好的效果,就要对拖尾的长度(停留时间)、宽度、材质和颜色渐变等参数进行细致调节。下面将逐一对Trail Renderer组件的属性做说明

属性 含义 说明
Cast Shadows 是否投射阴影 拖尾本身也可以像实体一样投射阴影,但实际上能否投射阴影与材质有关,某些材质本身不能投射阴影(一般不需要阴影)
Receive Shadows 是否接受阴影 拖尾会显示被其它物体投射的阴影(一般不需要阴影)
Materials 材质 拖尾的材质。最重要的属性之一
Time 时间 拖尾持续的时间。决定了拖尾的总体长度
Min Vertex Distance 最小顶点距离 拖尾本身和模型一样,定点是有限多的。此选项指定拖尾两个顶点之间的间距,间距越小顶点就越多、拖尾越顺滑,但性能消耗也更大
Auto Destruct 自动销毁 游戏对象空闲时销毁拖尾,可以节约资源
Width 宽度 此属性是一个曲线,可以控制拖尾从头部到尾部的粗细变化
Color 颜色 用一个颜色梯度控制拖尾颜色的变化
Corner Vertices 角顶点 增加这个值,使拖尾的小拐角更圆润
End Cap Vertices 端盖顶点 增加这个值,可以让拖尾的端点更圆润
Alignment 对齐 拖尾本身是一个“广告牌”,从各个角度看是一样的。可以选择让它朝着摄像机或是z轴
Texture Mode 纹理模式 控制材质贴图如何贴到拖尾上。包括Stretch(拉伸)、Wrap(重复纹理)等。贴图方式与材质有关,有些材质适合重复,有些事和拉伸

还有一些与光照、高级渲染相关的属性,其使用与光照和渲染有关,此处不再详述。

将拖尾设置完成之后,会在物体运动时自动出现,不需要额外设置。脚本主要是开启或关闭拖尾,以及改变拖尾的时间、材质等,示例如下。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestTrail : MonoBehaviour
{
    TrailRenderer trail;
    public Material mat1;
    public Material mat2;
    void Start()
    {
        trail = GetComponent<TrailRenderer>();
        trail.sharedMaterial = mat1;
    }


    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Space))
        {
            if(trail.sharedMaterial==mat1)
            {
                trail.sharedMaterial = mat2;
                trail.startColor = Color.red;
                trail.endColor = Color.red;
            }
            else
            {
                trail.sharedMaterial = mat1;
                trail.startColor = Color.blue;
                trail.endColor = Color.blue;
            }

        }
    }
}

效果如下

拖尾变换特效