unity组件LineRenderer

news2024/11/14 16:42:31

这是一个好玩的组件

主要作用划线,像水果忍者中的刀光,还有一些涂鸦的小游戏,包括让鼠标划线然后让对象进行跟踪导航也可通过此插件完成

附注:unity版本建议使用稳定一些的版本,有些api可能已经发生变化,请参考unity官方文档

此组件:线渲染器用于在 3D 空间中绘制自由浮动线。如果您要使用此组件请在3d场景文件中使用

unity官方文档:Unity - Scripting API: LineRenderer (unity3d.com)https://docs.unity3d.com/ScriptReference/LineRenderer.html

Public Methods(公有方法)

BakeMesh

Creates a snapshot of LineRenderer and stores it in mesh.

(创建linerender的快照并将其存储在mesh中)

GetPosition

Get the position of a vertex in the line.

(获取顶点在直线上的位置)

GetPositions

Get the positions of all vertices in the line.

(获取行中所有顶点的位置)

SetPosition

Set the position of a vertex in the line.

(设置顶点在直线中的位置)

SetPositions

Set the positions of all vertices in the line.

(设置行中所有顶点的位置)

Simplify

Generates a simplified version of the original line by removing points that fall within the specified tolerance.

(通过删除落在指定公差范围内的点来生成原始行的简化版本)

这里主要使用的是:SetPositions 

代码如下:

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



    public GameObject airPlane;//想要移动的模型、对象
    public LineRenderer line;//绘制线的组件
    public float speed = 1;//速度
    private Queue<Vector3> que = new Queue<Vector3>();//存储数据的栈(利用栈先进先出的特点)
    private Vector3 pos;//坐标点
    private Vector3 prevPos;//坐标点

    private float time;//时间
    private float starttime;//起始时间
    
   
    void Start()
    {
        //先归正,让画出来线的第一个点的位置与模型位置一致
        pos = airPlane.transform.position;
        this.transform.position = pos;
        //存储初始点位
        que.Enqueue(airPlane.transform.position);
    }

    
    void Update()
    {
        if (Input.GetMouseButton(0))
        {
            //射线点击生成一大堆坐标点,(由点成线)
            Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            //存储射线对象内的投射命中点的信息到RaycastHit 
            if (Physics.Raycast(ray, out hit))
            {
                prevPos = hit.point;

            }


            //这里是给2d的注释掉部分
            //    Vector3 pp = Camera.main.WorldToScreenPoint(airPlane.transform.position);
            //Vector3 ppp = new Vector3(Input.mousePosition.x,Input.mousePosition.y,pp.z);
            //Vector3 p = Camera.main.ScreenToViewportPoint(ppp);
            

            //存储生成的线
            que.Enqueue(prevPos);
            //初始获取共有多少个点    组件上线段数量=栈中的坐标
            line.positionCount = que.Count;
            //给组件设置参数
            line.SetPositions(que.ToArray());
        }
        else if (Input.GetMouseButtonUp(0))
        {
            //进行计算运行效果
            PlaneMove();
        }

        if (pos!=airPlane.transform.position)
        {
            //判断是否一致第一个点
            //进行缓慢的沿着线段移动
            airPlane.transform.position=Vector3.Lerp(airPlane.transform.position,pos,(Time.time-starttime)/time);
            //初始获取共有多少个点    组件上线段数量=栈中的坐标
            line.positionCount = que.Count;
            //给组件设置参数
            line.SetPositions(que.ToArray());
        }
        else if (que.Count > 0)
        {
            PlaneMove();
        }
    }

    public void PlaneMove()
    {
        //出栈,赋值刷新数据
        pos = que.Dequeue();
        //获取当前时间
        starttime = Time.time;
        //计算距离,进行移动
        time = Vector3.Distance(airPlane.transform.position, pos)/speed;
        //让物体朝着线段方向进行移动
        airPlane.transform.up = pos - airPlane.transform.position;
    }

当然上面的代码是简单的书写了原理,做了一个画线导航的功能

此插件还可做闪电效果:

Unity LineRenderer 实现闪电效果

(54条消息) Unity LineRenderer 实现闪电效果_unity闪电_路妖姬.山良有木的博客-CSDN博客

 

--------------------------------

然后在这里有个动态虚线的效果

1、首先导入一张图片

(图片要求,两端透明中间白色,可以使用ps一类的插件进行制作)

2、对导入的图片进行参数调整如下图(注意第二个我这张图没有打钩,请记得打上)

 read/write Enable 允许读写(允许程序以其他的方式进行修改)

Wrap Mode 包装方式/纹理坐标环绕模式(倒不如说是渲染方式,在这里选择的是重复 渲染 填充)

这里面默认是:固定 clamp  (就是一张死图)

还有:(请根据需要进行使用)

      

 3、创建一个材质球,然后将图片添加进去

 4、添加材质并设置

(下图这里是LineRenderer组件的截图,在材质球中Tiling修改参数会改变图片渲染的间距)

 接着使用代码就可以了

-----------------------

在像素游戏中一些场景背景的动态制作也会应用到,画图等,总之这是一个相当有意思的组件

行军蚁效果指路:(2d,本文代码适用于3d方面,部分内容为补充内容)

(54条消息) 【游戏开发解答】教你在Unity中使用LineRenderer制作行军蚂蚁线(行军 | 虚线 | 路径 | 线段)_林新发的博客-CSDN博客_linerenderer 虚线

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

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

相关文章

【数据结构初阶】第四篇——双向链表

链表介绍 初始化链表 销毁链表 打印双向链表 查找数据 增加结点 头插 尾插 在指定位置插入 删除结点 头删 尾删 删除指定位置 链表判空 获取链表中元素个数 顺序表和链表对比 存取方式 逻辑结构与物理结构 时间性能 空间性能 链表介绍 本章讲的是带头双向链…

回溯算法秒杀所有排列-组合-子集问题

&#x1f308;&#x1f308;&#x1f604;&#x1f604; 欢迎来到茶色岛独家岛屿&#xff0c;本期将为大家揭晓LeetCode 78. 子集 90. 子集 II 77. 组合 39. 组合总和 40. 组合总和 II 47. 全排列 II&#xff0c;做好准备了么&#xff0c;那么开始吧。 &#x1f332;&#x1f…

上海亚商投顾:A股两市震荡走弱 北证50指数大涨5.8%

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。市场情绪沪指今日震荡调整&#xff0c;创业板指午后一度跌近1.5%&#xff0c;黄白二线分化明显&#xff0c;题材概念表现活跃…

Redis快速入门

Redis快速入门&#xff0c;分两个客户端&#xff1a;Jedis和SpringDataRedis 使用Jdedis 1、引入依赖 <!--jedis--> <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version>…

python算法面试题

这是我年前做技术面试官&#xff0c;搜集的面试题&#xff0c;从python基础-机器学习-NLP-CV-深度学习框架-Linux-yolo都有一些题目。针对不同方向的应试者问相应方向的问题。 基本上都是面试八股文&#xff0c;收集记录一下&#xff0c;以后自己也会用的到。 面试题 python基…

深入理解mysql的内核查询成本计算

MySql系列整体栏目 内容链接地址【一】深入理解mysql索引本质https://blog.csdn.net/zhenghuishengq/article/details/121027025【二】深入理解mysql索引优化以及explain关键字https://blog.csdn.net/zhenghuishengq/article/details/124552080【三】深入理解mysql的索引分类&a…

过年回家,你是否也努力的给别人解释软件开发是干啥滴?

这个年就这样&#xff0c;在喜气洋洋的气氛中&#xff0c;在我们依依不舍的留恋中&#xff0c;从我们身边溜走了。这次回家又碰见了亲戚们不厌其烦的问我&#xff0c;你做什么工作呐&#xff1f;于是就有了我以下生动的解释 目录 打字的 帮助传话&#xff0c;帮助卖东西 皮…

易点易动打通固定资产采购,为企业实现降本增效

企业为什么要实现采购和资产管理的连接&#xff1f; 随着科技的发展&#xff0c;企业的办公工具越来越多&#xff0c;各类办公软件数不胜数。随之而来的是数据的不连通&#xff0c;员工需要穿梭在各个办公软件&#xff0c;重复导入导出数据&#xff0c;无形中没有提升办公效率…

三维电子沙盘数字沙盘开发教程第3课

三维电子沙盘数字沙盘开发教程第3课下面介绍矢量图层的控制显示&#xff1a;上代码foreach(string key in gis3d.SetFile.Biao.Keys)// gis3d.SetFile.Biao 该对象里存储了所有矢量层的信息{gis3d.SetFile.Biao[key].Show true; //是否显示标签gis3d.SetFile.Biao[key].ShowTe…

1.Weisfeiler-Lehman Algorithm

文章目录1.图同构介绍2.Weisfeiler-Lehman Algorithm3.后话参考资料欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; Weisfeiler-Lehman Algorithm是美国的数学家Boris Weisfeiler在1968年发表的论文the reduction of a graph to a canonic…

Flask WebSocket学习笔记

WebSocket简介&#xff1a;WebSocket是一种全新的协议&#xff0c;随着HTML5的不断完善&#xff0c;越来越多的现代浏览器开始全面支持WebSocket技术了&#xff0c;它将TCP的Socket&#xff08;套接字&#xff09;应用在了webpage上&#xff0c;从而使通信双方建立起一个保持在…

Java面向对象基础

文章目录面向对象一、类和对象1. 类的介绍2. 类和对象的关系3. 类的组成4. 创建对象和使用对象的格式二、对象内存图1. 单个对象内存图2. 两个对象内存图3. 两个引用指向相同内存图三、成员变量和局部变量四、this 关键字1. this 可以解决的问题2. this 介绍3. this 内存图五、…

学术的快乐来源

文章目录我的核心快乐来源&#xff1a;其他非核心快乐源泉知乎搜到的别人的快乐来源作此文&#xff0c;以便懈怠时候看看&#xff0c;能够聊表安慰。 ——题记 抱着给自己枯燥无聊学术生涯找点乐子的想法&#xff0c; 我决定仔细思考一下自己做学术的时候有哪些快乐的地方&…

C++关于开源包7zip压缩工具的编译及使用

1、7zip的配置 7-Zip是一款免费开源的压缩与解压软件&#xff0c;基本能够满足绝大多数常见的压缩和解压文件需求&#xff0c;此外还支持了分卷压缩和解压&#xff0c;非常好用。但是调用7-zip库需要用到一个叫bit7z的库&#xff0c;bit7z是一个C静态库&#xff0c;其封装了简单…

MySQL 中主从之间是怎样保证数据一致的呢?

在我们日常的工作中&#xff0c;处理 MySQL 数据库相关问题时&#xff0c;我相信绝大多数 DBA 处理最棘手的问题就是数据库主从数据不一致的问题。 处理过关于 MySQL 数据库主从数据不一致的朋友一定印象非常深刻&#xff0c;因为稍有不慎就会将造成原有数据的丢失&#xff0c…

精益安灯电子看板实现了实时监测

众所周知&#xff0c;智能工厂的规划建设是一个十分复杂的系统工程。所以安灯电子看板是精益生产中一一个重要组成要素&#xff0c;可以提升工厂生产车间的过程管理&#xff0c;生产数据做的信息化、目视化&#xff1b;信息快捷化、生产工序透明化等&#xff0c;是提高生产率的…

自动控制原理笔记-根轨迹的概念-根轨迹方程

目录 根轨迹的基本概念&#xff1a; 根轨迹的概念&#xff1a;当开环系统某一参数从 0 到∞变化时&#xff0c;闭环极点在S 平面上变化所描绘出的轨迹。 闭环零极点与开环零极点之间的关系&#xff1a; 根轨迹方程&#xff1a; 开环增益于根轨迹间的关系&#xff1a; 闭环系…

excel 格式化日期为字符串

最近经常遇到excel打开文件的时候&#xff0c;excel自动将yyyy-MM-dd HH:mm:ss &#xff08;如&#xff1a;2022-01-21 12:12:12 &#xff09;之类的时间的自动转为这样的格式列&#xff0c;2022/1/21 12:12:12 &#xff0c;导致有想从excel/csv格式 中复制原始日期格式比较麻烦…

【软件测试】一个真正的测试面试过程,我比面试官还狡猾......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 先卖个关子&#xf…

关羽这灵敏度你们爱了吗?#走位 #游戏外设

关羽这灵敏度你们爱了吗&#xff1f;#走位 #游戏外设 关羽这灵敏度你们爱了吗&#xff1f;#走位 #游戏外设