任何一个无规则曲线它都是有若干个线段组成,及时是圆形它也是又若干个线段组成的,也就是说将若干个线段拼接起来就是我们须要的无规则曲线~那么在3D 的世界中我们须要知道 X Y Z 三个点来确定一条3D线段。
 
首先先使用Unity编辑器的方式来添加一条线~

Unity -> GameObject -> Create Empty 创建一个空的对象,我命名为line。然后点击 Component -> Miscellaneous -> Line Renderer 给line添加一个线渲染器的属性,Line Renderer是非常中的属性,下面我会详细的说明。

    
 
Create -> Material 创建一个材质,做来这个线段的贴图,下面我们看看Line Renderer的一些重要参数。
Cast Shadows: 是否投射阴影。
Receive Shadows: 是否接收阴影。
Materials :设置材质,这里可以设置多个材质, line就是上面我们创建的材质,这里我给line这个材质涂上了红颜色。
Positions:这个属性就比较重要了,它是专门设置线段在3D 世界中的点的坐标,size 设置点的数量 为3 那么将会有3个点,Element 0   Element 1 Element 2    这三个点将确定这条曲线分为两段,第一段是(0,0,1) 到  (0,0,2) ,第二段是 (0,0,2) 到(0,0,4)。
 
 
Paramerters 
StartWidth :设置起点的宽度  
EndWidth:  设置终点的宽度 ,这两项数值默认为1,但是现实起来很宽,所以一般都设置为0.几~ 
Start Color: 设置起点颜色
Start Color: 设置终点颜色
Use World Space 使用世界坐标系
 
大家看看效果,清楚的可以看到曲线分为两部分,第一部分较短 第二部分较长。
 
 
怎么样? 绘制线的方法不难学吧?在已知线段位置的情况下我们可以使用上面的方法去设置这条线,但是如果线段的位置是在游戏过程中动态的产生就得在代码中去动态的去设置。
 
 
创建脚本Main.cs 绑定到摄像头上,运行游戏绘制线的话须要在Main中去拿到line这个对象的实例。这就是一个比较重要的知识点了。
 
一些重要的方法,在编辑器中编辑的一些东西,在代码中也可以做到。
 
LineRenderer.SetWidth(0.1,0.1) ; 设置线段起始点与结束点的宽度 (参数1 为起始点 参数2为结束点)
LineRenderer.SetColor(Color.black,Color.white); 设置线段起始点与结束点的颜色 (参数1 为起始点颜色 参数2为结束点颜色)
LineRenderer.SetVertexCount(5); 设置线段数量。
LineRenderer.useWorldSpace = true; 是否使用世界坐标系,和上面编辑器对应。
 
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Threading;
  4. public class Main : MonoBehaviour {
  5. //游戏对象,这里是线段对象
  6. private GameObject LineRenderGameObject;
  7. //线段渲染器
  8. private LineRenderer lineRenderer;
  9. //设置线段的个数,标示一个曲线由几条线段组成
  10. private int lineLength = 4;
  11. //分别记录4个点,通过这4个三维世界中的点去连接一条线段
  12. private Vector3 v0 = new Vector3(1.0f,0.0f,0.0f);
  13. private Vector3 v1 = new Vector3(0.0f,1.0f,0.0f);
  14. private Vector3 v2 = new Vector3(0.0f,0.0f,1.0f);
  15. private Vector3 v3 = new Vector3(1.0f,0.0f,0.0f);
  16. void Start(){
  17. //通过之前创建的对象的名称,就可以在其它类中得到这个对象,
  18. //这里在main.cs中拿到line的对象
  19. LineRenderGameObject = GameObject.Find ("line");
  20. //通过游戏对象,GetComponent方法 传入LineRenderer
  21. //就是之前给line游戏对象添加的渲染器属性
  22. //有了这个对象才可以为游戏世界渲染线段
  23. lineRenderer = (LineRenderer)LineRenderGameObject.GetComponent ("LineRenderer");
  24. //设置线段长度,这个数值须要和绘制线3D点的数量想等
  25. //否则会抛异常~~
  26. lineRenderer.SetVertexCount(lineLength);
  27. }
  28. void Update() {
  29. //在游戏更新中去设置点
  30. //根据点将这个曲线链接起来
  31. //第一个参数为 点的ID
  32. //第二个 参数为点的3D坐标
  33. //ID 一样的话就标明是一条线段
  34. //所以盆友们须要注意一下!
  35. lineRenderer.SetPosition (0, v0);
  36. lineRenderer.SetPosition (1, v1);
  37. lineRenderer.SetPosition (2, v2);
  38. lineRenderer.SetPosition (3, v3);
  39. }
  40. }
 
通过上面代码的设置,运行游戏,发现全新的一个三角形曲线赫然的映入我们的眼帘,有了上面的方法我们就可以组合的绘制出各种各样的3D 游戏曲线了,这里MOMO使用的是颜色,大家也可以添加一个贴图~
 
 

(转)unity使用line renderer画线的更多相关文章

  1. Unity 自定义编辑器窗口 画线

    最近在学习状态机, 想自己实现一个可视化编辑器, 需要将多个状态之间用线条连接起来, 效果如下: 代码如下: Material m;Vector2 start;Vector2 end;Color co ...

  2. 画线缩放、瞳距缩放、Line延长到指定长度,内附效果,源码供应,解压就跑

    前言 公司项目需要做个画线缩放,我司称之为瞳距缩放,简而言之就是:2张图,从第一张图画一条线,再从第二个图画一条线,第二条线以第一条为基准,延长到一致的长度,并同比缩放图片:文字太枯燥,请先实例图 例 ...

  3. Unity之屏幕画线

    using UnityEngine;using System.Collections; public class DrawRectangle : MonoBehaviour { public Colo ...

  4. unity3d NavMeshAgent 寻路画线/画路径

    今天在群里看见有个小伙在问Game视图寻路时怎么画线 正好前几天写了个寻路,而且自己也不知道具体怎么在寻路时画线,所以决定帮帮他,自己也好学习一下 在百度查了一下资料,直接搜寻路画路径.寻路画线... ...

  5. webgl学习总结画线面及场景和物体动

    WebGL是在浏览器中实现三维效果的一套规范.是浏览器中的3D引擎,是利用js代码来实现加载3D模型,渲染.输出等功能,从而实现在浏览器和微信中浏览三维文件的效果. three.js是基于WebGL的 ...

  6. C#使用 DirectX SDK 9做视频播放器 并在视频画线添加文字 VMR9

    视频图像处理系列 索引 VS2013下测试通过. 在百度中搜索关键字“DirectX SDk”,或者进入微软官网https://www.microsoft.com/en-us/download/det ...

  7. iOS小画板画线总结

    一:基本画线: 使用贝赛尔曲线画: //创建路径 UIBezierPath* aPath = [UIBezierPath bezierPath]; //设置线宽 aPath.lineWidth = 5 ...

  8. [修复] Firemonkey 画线问题(Android & iOS 平台)

    问题:官方 QC 的一个 Firemonkey 移动平台画线问题: RSP-14309: [iOS & Android] Delphi 10.1 Berlin - drawing proble ...

  9. WPF画线问题,几千条以后就有明显的延迟了。

      我现在是这么画的,class A { private GeometryGroup _lines; private Path _path; public A() {    _path.Data = ...

随机推荐

  1. MikroTik RouterOS安装chr授权到阿里云虚拟机(转)

    CHR介绍 CHR(Cloud Hosted Router) 是用于在虚拟机上运行的 RouterOS 版本,它支持x86_64架构,支持大多数流行的虚拟化技术,如 VMWare, Hyper-V, ...

  2. Wingdings 2 符号编码对照表

     http://blog.csdn.net/linux7985/article/details/5030754 符号  编码 HTML 代码  符号  编码 HTML 代码 ! ! " &q ...

  3. ARM汇编编程基础之一 —— 寄存器

    ARM的汇编编程,本质上就是针对CPU寄存器的编程,所以我们首先要弄清楚ARM有哪些寄存器?这些寄存器都是如何使用的? ARM寄存器分为2类,普通寄存器和状态寄存器 寄存器类别 寄存器在汇编中的名称 ...

  4. AN2820 Driving bipolar stepper motors using a medium-density STM32F103xx microcontroller

    AN2820 Driving bipolar stepper motors using a medium-density STM32F103xx microcontroller Introductio ...

  5. TCP握手与socket通信细节

    http://www.jianshu.com/u/5qrPPM http://www.jianshu.com/p/f86512230707

  6. Java 微服务实践 - Spring Boot 系列

    https://segmentfault.com/l/1500000009515571

  7. LESS碎语

    推荐在Brackets安装"LESS AutoCompile"插件,当保存less文件会自动生成或保存相应的css文件. 变量 以@开头声明变量,并且对变量进行分类,比如颜色变量. ...

  8. IEnumerable和IQueryable的区别以及背后的ExpressionTree表达式树

    关于IEnumerable和IQueryable的区别,这事还要从泛型委托Func<T>说起.来看一个简单的泛型委托例子: class Program { static void Main ...

  9. javascript:addEventListener

    addEventListener 用于注册事件处理程序,IE 中为 attachEvent,我们为什么讲 addEventListener 而不讲 attachEvent 呢?一来 attachEve ...

  10. linux搭建C开发环境

    目前决大多 数的Linux用户对Linux的了解还处于比较低级的层次,他们可能会几条命令.会配几种服务.会用rpm来安装软件.会操作KDE/Gnome界机等等,但是当他们遇到一些需要编译安装的软件时, ...