unity 使用LineRenderer实现飘带飞舞的效果
核心就是控制飘带上的每一个点,计算出相应的位置,然后使用LineRenderer把这些点连成线。
首先创建一个物体作为飘带的父物体,这里我使用了一个简单的Sphere。
然后给父物体添加Line Render脚本:
赋予Line Render一个材质球,否怎Line Render会显示为洋红色,调整Line Render的一些属性,这里我把width属性改为0.3,原来的1会让我们的线看起来不那么苗条。
然后创建我们的脚本,首先创建一个飘带中的控制点的脚本,它只是简单的用来让控制点能够跟随自己前面的物体:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class FloatLinePoint : MonoBehaviour {public GameObject parentObj;const float speed = 0.7f;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {transform.position = transform.position + ((parentObj.transform.position + new Vector3(FloatLineManager.pointdis,0,0)) - transform.position) * speed;}
}
然后创建飘带的控制脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class FloatLineManager : MonoBehaviour {LineRenderer lr;List<GameObject> objList = new List<GameObject>();//顶点数量[SerializeField,Range(1,100)] public int pointcount = 20;//顶点距离[SerializeField, Range(0.01f, 1f)] public static float pointdis = 0.3f;// Use this for initializationvoid Start () {lr = gameObject.GetComponent<LineRenderer>();lr.positionCount = pointcount;//生成顶点for (int i = 0; i < pointcount; i++){GameObject obj = new GameObject(i+"");obj.transform.position = new Vector3(transform.position.x + (float)i * pointdis,transform.position.y,0);objList.Add(obj);FloatLinePoint point = obj.AddComponent<FloatLinePoint>();if(i == 0){point.parentObj = gameObject;}else{point.parentObj = objList[i - 1];}}}// Update is called once per framevoid Update () {Vector3[] vs = new Vector3[objList.Count];for (int i = 0; i < objList.Count; i ++){vs[i] = objList[i].transform.position;}lr.SetPositions(vs);}
}
Start中我们根据声明的pointcount变量的值来创建相应的控制点,然后在Update中获取控制点的坐标,并实时赋予Line Render,这样我们就可以得到一个基础的飘带效果,我们可以通过调节FloatLinePoint中的speed参数来修改飘带的幅度:
但是现在看起来飘的不是很明显,而且我想要的是有风吹动的效果,所以还需要继续修改我们的代码:
unity 使用LineRenderer实现飘带飞舞的效果相关推荐
- Unity使用LineRenderer组件画出菱形,长度,角度可任意调节
首先说下我的思路: 开始想的比较简单,就是先建两个空物体分别挂上脚本,一个在X轴画直线,一个与X轴成angle夹角,通过计算得出坐标,这样就能画出一个菱形的角度,下面是实例图: 最后再写个脚本通过循环 ...
- Unity 使用LineRenderer绘制贝塞尔曲线
Unity 使用LineRenderer绘制贝塞尔曲线 LineRenderer介绍 LineRenderer线渲染器,在三维空间中渲染线段和曲线段. 贝塞尔曲线介绍 通过很少的控制点,生成复杂的平滑 ...
- Unity URP世界空间后处理扫描圈效果Shader
实现原理 见这篇文章Unity Shader-深度相关知识总结与效果实现(LinearDepth,Reverse Z,世界坐标重建,软粒子,高度雾,运动模糊,扫描线效果)_puppet_master的 ...
- unity 随机数_Unity 雨水滴到屏幕效果
文章目录 前言 一.实现过程 1.代码 2.代码分步解析 总结 参考 前言 本文主要介绍用unity实现雨水滴到屏幕的效果,文章介绍的是基础实现,读完这篇文章再去实现复杂效果会更得心应手些.我们先看更 ...
- Unity学习笔记(4)-----粒子效果的实现
Unity学习笔记(4)-–粒子效果的实现 一.效果展示 下面用若干张张动图展示效果: 大概就是这样,并不是很难. 实际效果要比图中的好一点(顺畅得多). 实现步骤 大致可以分为如下几个步骤,然后逐个 ...
- Unity 之 ShaderGraph 实现自发光和能量护盾效果入门级教程
Unity 之 ShaderGraph 实现自发光和能量护盾效果入门级教程 前言 一,效果展示 二,原理介绍 三,发光效果 2.1 准备工作 2.2 开始制作 2.3 实际使用 四,护盾效果 2.1 ...
- Unity实用小工具或脚本——可折叠伸缩的多级(至少三级)内容列表(类似于Unity的Hierarchy视图中的折叠效果)
目录 一.前言 二.实现 2.1.创建ScrollView 2.2.制作层级预设体BaseLevelPartObj 2.3.设置该预设体的初始化处理方法 2.4.读取Hierarchy的内容并创建UI ...
- pyqt5可以写手机apk吗_不需要写代码,直接在unity实现手机可以跑的毛发效果
大家好, 我是炭窑居士, 好久不见 这次由我和好友fxyyoung一起给大家带来原创的毛发效果案例:不需要写代码,直接在unity实现手机可以跑的毛发效果! 效果如下面两图,是我们在unity里面直接 ...
- Unity实现模拟仿真飞机起飞降落效果
Unity实现模拟仿真飞机起飞降落效果 前言 在最近的项目中,我实现了一个简单的飞机起飞.降落功能,运用了初中物理速度.加速度,以及Unity的Translate函数实现的.实现的难度一般,效果还可以 ...
最新文章
- viewport使用 html5
- Iframe 用法浅析
- sql server schema下拉不到存储过程_mysql数据库字符编码总结--数据存储编码
- SAP成都研究院廖婧:SAP C4C社交媒体集成概述
- 某一个接口403 其他接口可以调通_Neo的务实外设指南 篇三十六:一个就够,65W快充+C口混插+最多6个设备 - 飞利浦65W摩天轮插座_插座...
- 在创业公司工作是一种什么样的体验?
- Mybatis的动态拼接条件
- linux tomcat 改端口号,Ubuntu中Tomcat更改80端口
- 计算机组成原理之指令和寻址方式
- PowerDesigner 使用记录
- hmac sha256 php,PHP中的HMAC-SHA-256
- Error:Execution failed for task ':app:clean'. Unable to delete directory: /media/file/workspaces/a
- 4.企业应用架构模式 --- Web表现层
- 日常琐事的记录,每周六晚做一次总结整理
- python代码写龙卷风_python - 龙卷风服务器二进制可执行文件
- 计算机6005是开机时间,怎么查电脑的开机,和关机时间·,同学们
- 医学影像组学人工智能案例结合
- Unity利用双相机巧做水印功能
- 什么是stub文件_stub code
- openCV中二值化图像的方法