Unity LineRender

之前我也关于linrender划线写过一篇博客 这个是最近项目中使用到的功能就研究了下 当然也欢迎大佬帮忙优化代码
闲话不多说 先上划线的代码

    //画线的端点public GameObject[] AllPosition;//移动的点public Transform MoveCube;//移动的坐标public Vector3[] VecValue;int num = 0;//LineRendererprivate LineRenderer lineRenderer;void Start(){//画线//添加LineRenderer组件lineRenderer = gameObject.GetComponent<LineRenderer>();//设置颜色lineRenderer.startColor = new Color32(198, 171, 118, 255);lineRenderer.endColor = new Color32(198, 171, 118, 255);//设置宽度//lineRenderer.SetWidth(0.02f, 0.02f);lineRenderer.startWidth = 0.03f;lineRenderer.endWidth = 0.03f;}VecValue = new Vector3[AllPosition.Length];for (int i = 0; i < AllPosition.Length; i++){VecValue[i] = AllPosition[i].transform.localPosition;}

相比较之前的划线  多了一个需要移动的点跟目标点位 划线方法 跟随移动的Transform来不断移动坐标 目标坐标就是设置的数组点 当然这个方法还需要在update中调用 并且  如果前面的节点不显示 后面的节点也不画线  由于是触摸屏 所以要根据节点是否显示 控制划线 所以要有结点显示与否的判定

//检测数组中是否包含某些数据public bool DetectionData(int num){if (num == 0){return true;}//如果包含for (int i = 0; i < num + 1; i++){if (!Number.Contains(i)){return false;}}return true;}public List<int> Number = new List<int>();public void LineMove(){for (int i = 0; i < AllPosition.Length; i++){if (AllPosition[i].activeSelf){if (!Number.Contains(i)){Number.Add(i);Maxnums = i;NumberValueSet();}}else{if (Number.Count > i){Number.RemoveAt(i);Maxnums = i - 1;}}}}

根据这样的方法去判断 前面的结点是否显示  如果显示 在开始划线  划线结束 将所有划线的点坐标跟随物体的点坐标 这样移动的时候线条也跟着移动

public int Maxnums = 0;bool IsValue = true;bool IsLine = false;void Update(){LineMove();if (DetectionData(Maxnums) && Maxnums > 0){AllActive(Maxnums + 1);}}//画线方法public void AllActive(int MaxNum){if (IsValue){VecValue = new Vector3[MaxNum];for (int i = 0; i < MaxNum; i++){VecValue[i] = AllPosition[i].transform.position;}MoveCube.position = VecValue[0];IsValue = false;IsLine = true;}if (IsLine){//画线lineRenderer.positionCount = MaxNum;MoveCube.position = Vector3.MoveTowards(MoveCube.position, VecValue[num], 5f * Time.deltaTime);for (int i = num; i < MaxNum; i++){lineRenderer.SetPosition(i, MoveCube.position);}lineRenderer.SetPosition(num, MoveCube.position);if (MoveCube.position == VecValue[num]){num++;if (num > MaxNum - 1){num = MaxNum - 1;IsLine = false;}}}if (!IsLine){if (lineRenderer.positionCount != MaxNum){lineRenderer.positionCount = MaxNum;}for (int i = 0; i < MaxNum; i++){lineRenderer.SetPosition(i, AllPosition[i].transform.position);}}}

在update 中调用方法 并且判断结点 显示在开始划线

当然还有另外一种方法 就是将判断结点是否显示 放在单个结点上检测  用一个控制器 控制这些划线动画 当然也更合理一些 不需要重新开始绘制线条

实现的效果

unity LineRender结合多点触摸 实现拖拽 重复画线相关推荐

  1. C++语言Qt实现控件拖拽和连线类似可视化操作Simulink仿真类软件 电路仿真软件 和模型驱动等软件

    目标:开发一个电路仿真软件. 内部原理:qt编写电路元件连接的可视化界面,输出电路节点连接关系为一张表.matlab编写电路仿真算法,读取节点连接表,进行运算,得出仿真结果,qt读取仿真结果并且在界面 ...

  2. 转大佬--C++语言Qt实现控件拖拽和连线类似可视化操作Simulink仿真类软件 电路仿真软件 和模型驱动等软件

    转自–标biao的文章:https://blog.csdn.net/kangkanglhb88008/article/details/120812524 目标:开发一个电路仿真软件. 内部原理:qt编 ...

  3. uni map地图相关使用小计(多点标识,拖拽起点,地图画圆)

    这次的项目用到了地图,特别记录下 小程序不执行地图相关事件时候,看下小程序的调试基础库 进行多点标注时候,经纬度要正确,图标设置50就好了,ID是一定得绑定的. 动态传参时候如果需要保留之前的标注点就 ...

  4. macbook触摸板拖拽不好用?复制选中难?教你两个设置,从此告别鼠标

    触控板设置 点击设置–触控板–更多手势,像下面这样设置 辅助功能设置 点击设置–辅助功能–左边下拉找到指针控制–触控板选项 启用三指拖拽 以后选中与拖拽只需要三指操作,再也不需要点按了,从此告别鼠标, ...

  5. vue 拖拽产生连线_dragUI

    dragUI 文档目录 用于UNI可拖拽可视化编程 在线演示 demo地址 一个简单创建hello world 界面的视频,github不会放视频,放在bilibli了 dragUI 演示视频 效果图 ...

  6. Unity实现UI的边缘检测和拖拽拉伸功能

    文章目录

  7. d3力导向图增加节点_D3.js+Es6+webpack构建人物关系图(力导向图),动态更新数据,点击增加节点,拖拽增加连线......

    Java学习手记2--多线程 一.线程的概念 CPU执行程序,就好比一个人在干事情一样,同一个时间你只能做一件事情,但是这样的效率实在是太低了,在你用电脑的时候,听歌就不能浏览网页,看电影就不能下载视 ...

  8. UGUI背包实现详解之一UGUI精准拖拽

    UGUI为开发者提供了许多实现交互的接口,包括拖拽类.点选类.鼠标指针类等,下面是最简单的UI拖拽实现方式: 将上边代码挂在UI上运行,就可以实现最简单的拖拽效果.但是这种方式存在问题:鼠标开始点下时 ...

  9. canvas 中的元素拖拽

    实验室要求实现在canvas的元素的拖拽,即在canvas放置一些图标,实现用户拖拽并连线. 需要的知识(1)canvas drawImage方法 function draw(){ var image ...

  10. Axure 10 案例:模拟鼠标拖拽画框线的效果

    介绍 鼠标拖拽画框线是我们常用的操作.可以通过Axure来完美的模拟鼠标拖拽画框线的效果,当接触到了其他控件的时候,可以通过交互来表示接触状态. 今天,就让我们来学习如何制作它. 预览效果 预览原型 ...

最新文章

  1. Java解决百马百担问题
  2. 20170608-BOM
  3. Python是否具有字符串“包含”子字符串方法?
  4. 数据结构 - 有两个链表,第一个升序,第二个降序,合并为一个升序链表(C++)
  5. Linux用户、群组管理
  6. [HNOI2015]亚瑟王
  7. 在Eclipse中运行hadoop程序
  8. AJAX实践DWR篇(转载)
  9. 图像分类_03分类器及损失:线性分类+ SVM损失+Softmax 分类+交叉熵损失
  10. CanFestival字典生成
  11. Window中的Docker 拉取Mysql镜像 并在本地Navicate链接
  12. C++学习笔记(一)——类和对象
  13. 怎样高效地管理自己阅读过的文献资料?
  14. UE4 相对坐标转世界坐标
  15. 【Keras】Keras中fit_generator的使用,及fit、fit_generator、和train_on_batch的区别
  16. 外观html与外观css的区别,用房间和装修来解读html代码与css样式的区别和关系
  17. 抓包工具有哪些你知道吗?今天给你们介绍四款最受欢迎的抓包神器
  18. dell r510服务器怎么装系统,DELLR510服务器上安系统
  19. 第三周java实验报告
  20. 怎样用计算机给ipd传电影,怎样不使用iTunes将电影导入iPad?

热门文章

  1. AtCode ABC069 C-4-adjacent
  2. Java并发学习(四)-sun.misc.Unsafe
  3. 大揭秘(1):网店背后的隐秘产业链【连载】
  4. wordpress 后台添加简单的友情链接
  5. 为什么要有域名,看完你就懂了。
  6. (Neighbourhood Components Analysis) NCA 近邻成分分析的学习
  7. 关于unity 3d人物换装
  8. win7配置TomCat环境
  9. 第4章 手机平板要兼顾,探究碎片
  10. Html 使 tbody加上滚动条