Unity 画虚线
来源:互联网 发布:淘宝客订单接口 编辑:程序博客网 时间:2024/06/06 01:45
昨天公司老大提出要将寻路的路点用虚线的形式显示出来,刚听到这个问题时,感觉有难度,想了好久没有好的解决方案
于是寻求度娘帮助,网上大部分是用shader 画虚线,但是好像都是显示在屏幕上的,并不是在3D空间中显示的。
偶尔发现一个帖子,只是粗略的说了用LineRenderer,再用贴图即可,说的比较笼统。当时也试了但是
效果不理想,主要原因是自己没有仔细看LineRender的属性,导致没有达到想要的效果,后来仔细想了想,
应该是UV问题导致的。于是就有了下面的解决方案。
首先看效果:
解决这个问题需要以下几点
1. 画曲线 画曲线可以使用Itween, 将曲线点计算出来
2. 添加LineRender组件
3. 新建材质line ,材质的纹理是虚线png图片
4. 写脚本将线绘制出来 收工
怎么利用Itween画线?
1.首先下载Itween 插件,ItweenPath
官网地址:http://www.pixelplacement.com/itween/index.php
2. 将Itween类改写在该类里添加这个函数即可
/// <summary> /// 获取曲线 /// </summary> /// <param name="path"></param> /// <returns></returns> public static List<Vector3> GetCrvePaths(Vector3[] path) { List<Vector3> paths = new List<Vector3>(); try { Vector3[] vector3s = PathControlPointGenerator(path); Vector3 prevPt = Interp(vector3s, 0); paths.Add(prevPt); int SmoothAmount = path.Length * 20; for (int i = 1; i <= SmoothAmount; i++) { float pm = (float)i / SmoothAmount; Vector3 currPt = Interp(vector3s, pm); prevPt = currPt; paths.Add(prevPt); } } catch (System.Exception ex) { } return paths; }
3.利用ItweenPath 摆放路点,拿到路点后
List<Vector3> listPath = new List<Vector3>(); listPath= iTween.GetCrvePaths(iTweenPath.GetPath("1")) ;
路点曲线已经解决完毕
怎么画曲线?
1. 新建空的GameObject ,添加LineRender组件
2. 新建材质命名line,将虚线png图片做为line的纹理
3. line的shader改为GUI/TextShader
4. line的tiling x y 缩放根据自己情况我这里设置为0.1f,0.1f
5. line 的TextColor 设置为自己想要的颜色
如图:
6.LineRender 设置材质为line
7.LineRender TextureMode 设置为Repate Per Segment
到此基本上就OK了
另外需要写一些代码
public class TestLine : MonoBehaviour { LineRenderer line; List<Vector3> listPath = new List<Vector3>(); // Use this for initialization void Start () { line = GetComponent<LineRenderer>(); listPath= iTween.GetCrvePaths(iTweenPath.GetPath("1")) ; line.SetVertexCount(listPath.Count); line.SetWidth(0.1f, 0.1f); line.receiveShadows = false; } // Update is called once per frame void Update () { for(int i=0;i<listPath.Count;i++) { line.SetPosition(i, listPath[i]); } }}
最后贴出虚线图片
- Unity 画虚线
- Unity中画实线与虚线
- [Unity实战]虚线的绘制
- 画虚线
- 画虚线
- 画虚线
- 画虚线
- 画虚线
- 画虚线
- 画虚线
- 画虚线
- 画虚线
- 画虚线
- 画水平虚线、竖直虚线
- Swift-画虚线、虚线圆
- 用ActionScript画虚线
- gdi+画虚线
- 画虚线(CPEN)
- 传递主窗口句柄或者控件给其他cpp使用
- Visual Studio 2013 VC++ 数据库的简单使用
- VC操作Excel之基本操作(颜色等)
- SpringMVC form表单传值中文乱码处理
- [NOIP] [线段树] [树状数组] NOIP2017Day2 列队
- Unity 画虚线
- 互斥锁加条件变量解决生产者消费者问题
- 杭电ACM OJ 1020 Encoding 输入一串字符 判断每种字符个数 我犯了个错误定义数组长度的错误
- Ubuntu在校园网(锐捷)中进行的网络设置
- 提取跨多行的函数声明的办法
- poj 3494
- HDU6231 K-th Number
- java线程安全之单例&多线程(十一)
- 简单算法之冒泡排序