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;}}}
}

效果如下

拖尾变换特效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/55517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何选择合适的损失函数

目录 如何选择合适的损失函数 1、均方误差&#xff0c;二次损失&#xff0c;L2损失&#xff08;Mean Square Error, Quadratic Loss, L2 Loss&#xff09; 2、平均绝对误差&#xff0c;L1损失&#xff08;Mean Absolute Error, L1 Loss&#xff09; 3、MSE vs MAE &#xff…

DevOps之自动化测试

什么是自动化测试&#xff1f; 明确一下自动化测试不是什么。自动化测试不是指自动化生成测试代码&#xff0c;而是自动化地执行由开发人员或测试人员编写的测试代码。正如下面这句谚语&#xff1a;“绝不要手工去做任何可以被自动化处理的事情。——Curt Hibbs” 之前是由人…

leetcode做题笔记102. 二叉树的层序遍历

给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 思路一&#xff1a;递归 int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes){int** ans(int**)mal…

在ubuntu上部署label-studio

1. 安装label-studio 由于服务器的默认python3版本太低&#xff0c;尝试了很多方法&#xff0c;没有升级。因此采用annaconda方式安装label-studio. a.安装anaconda: 参照如下链接&#xff0c;安装anaconda。 Ubuntu安装Anaconda详细步骤&#xff08;Ubuntu22.04.1&#xff…

复现【YOLO v7 + 各种tracker实现多目标跟踪】

参照YOLO v7 各种tracker实现多目标跟踪配置环境 1、配置要求 python3.7.0 pytorch1.7.0 torchvision0.8.0 cudatoolkit11.0py-motmetrics (pip install motmetrics)cython-bbox (pip install cython_bbox)opencv 2、配置过程 创建py37虚拟环境 conda create -n uavMOT p…

G. The Morning Star - 思维

分析&#xff1a; 直接暴力就会tle&#xff0c;不知道怎么下手&#xff0c;可以统计八个方向一条线上的所有坐标&#xff0c;这些坐标一定可以放在一起满足&#xff0c;分析都有哪些线&#xff0c;当横坐标相同时会有竖着的一条线都可以&#xff0c;也就是x c&#xff0c;当纵…

Midjourney 完整版教程(从账号注册到设计应用)

目录 一、Midjourney 介绍 二、Midjourney 的AI出图示例 三、手把手教你上手Midjourney 1、账号&初始化 1.1 账号注册登录 1.2 账号付费 1.3 账号初始化 2、Midjourney的基础设置 3、Midjourney 出图步骤。 (一)直接描述出图 (二)垫图生图。 4、Midjourney的…

安装elasticsearch8.9.0及修改配置

安装es流程 打开文件,添加以下行 vim /etc/sysctl.conf vm.max_map_count=262144重启生效 sysctl -p创建用户 useradd es passwd es修改es目录所属用户 chown -R es:es /opt/elasticsearch-8.9.0如果内存不足,可以修改es的初始化内存和Max内存,修改文件/opt/elasticsearch-8…

C 连接MySQL8

Linux 安装MySQL 8 请参考文章&#xff1a;Docker 安装MySQL 8 详解 Visual Studio 2022 编写C 连接MySQL 8 C源码 #include <stdio.h> #include <mysql.h> int main(void) {MYSQL mysql; //数据库句柄MYSQL_RES* res; //查询结果集MYSQL_ROW row; //记录结…

ruoyi-cloud部署

默认你已经安装mysql&#xff0c;nacos&#xff0c;seata&#xff0c;sentinel等&#xff08;没有的可以先找教程安装&#xff09; 1、下载源码&#xff1a;git clone https://gitee.com/zhangmrit/ruoyi-cloud 2、项目依赖导入&#xff0c;选择自己的maven环境等&#xff0c;创…

数组、对象和类数组遍历方式

数组遍历方法&#xff1a; every(),some(),entries(),fill(),filter(),find(),for..of,for 循环&#xff0c;forEach,includes(),indexof(),join(),map(),reduce(),sort(),reverse(),flat() 对象遍历方法&#xff1a; for...in Object.keys(obj) Object.values(obj) Obje…

Linux环境下交叉编译环境安装、编译和运行

Win11主机上安装虚拟机&#xff0c;虚拟机内运行Ubuntu20.04&#xff0c;为了能够在本地电脑&#xff08;Win11&#xff09;上开发测试软件和算法&#xff0c;最终将编译好的可执行文件拷贝到Linux板上&#xff08;Rk3288上运行linux系统&#xff09;运行&#xff0c;因此需要安…

经典算法之滑动窗口-暴力解法+单调队列解法

作用&#xff1a;通常求最大(小)子数组/子序列/值 package com.xch.niuke;import java.util.Arrays; import java.util.LinkedList; import java.util.List;/*** 滑动窗口** author XuChenghe* date 2023/8/27 12:18*/ public class Main001 {public static void main(String[…

从 Future 到 CompletableFuture:简化 Java 中的异步编程

引言 在并发编程中&#xff0c;我们经常需要处理多线程的任务&#xff0c;这些任务往往具有依赖性&#xff0c;异步性&#xff0c;且需要在所有任务完成后获取结果。Java 8 引入了 CompletableFuture 类&#xff0c;它带来了一种新的编程模式&#xff0c;让我们能够以函数式编…

Spring MVC详解

文章目录 一、SpringMVC1.1 引言1.2 MVC架构1.2.1 概念1.2.2 好处 二、开发流程2.1 导入依赖2.2 配置核心(前端)控制器2.3 后端控制器2.4 配置文件2.5 访问 三、接收请求参数3.1 基本类型参数3.2 实体收参【重点】3.3 数组收参3.4 集合收参 【了解】3.5 路径参数3.6 中文乱码 四…

实时同步ES技术选型:Mysql+Canal+Adapter+ES+Kibana

基于之前的文章&#xff0c;精简操作而来 让ELK在同一个docker网络下通过名字直接访问Ubuntu服务器ELK部署与实践使用 Docker 部署 canal 服务实现MySQL和ES实时同步Docker部署ES服务&#xff0c;canal全量同步的时候内存爆炸&#xff0c;ES/Canal Adapter自动关闭&#xff0c…

什么是回调函数(callback function)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 回调函数&#xff08;Callback Function&#xff09;⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这…

C#---第二十: partial修饰类的特性及应用

0.知识背景 局部类型适用于以下情况&#xff1a; 类型特别大&#xff0c;不宜放在一个文件中实现。一个类型中的一部分代码为自动化工具生成的代码&#xff0c;不宜与我们自己编写的代码混合在一起。需要多人合作编写一个类 局部类型的限制: 局部类型只适用于类、接口、结构&am…

手写数字识别之优化算法:观察Loss下降的情况判断合理的学习率

目录 手写数字识别之优化算法:观察Loss下降的情况判断合理的学习率 前提条件 设置学习率 学习率的主流优化算法 手写数字识别之优化算法:观察Loss下降的情况判断合理的学习率 我们明确了分类任务的损失函数&#xff08;优化目标&#xff09;的相关概念和实现方法&#xff…

Flutter Cannot run with sound null safety, because the following dependencies

flutter sdk 版本升级到2.0或者更高的版本后&#xff0c;运行之前的代码会报错 Error: Cannot run with sound null safety, because the following dependencies dont support null safety:- package:flutter_swiper- package:flutter_page_indicator- package:transformer_p…