任何一个无规则曲线它都是有若干个线段组成,及时是圆形它也是又若干个线段组成的,也就是说将若干个线段拼接起来就是我们须要的无规则曲线~那么在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. linux脚本启动停止一个jar

    ###########################启动########################### #!/bin/sh ####定义一个函数在当前文件夹下读取所有jar文件 functi ...

  2. 使用Docker中国官方镜像的加速地址

    vi /etc/docker/daemon.json # 添加如下内容 { "registry-mirrors": ["https://registry.docker-c ...

  3. OpenVPN选项topology subnet实现子网掩码24的子网地址扩展

    首先,在国内的文章中都没有提及这个概念,到时很多人生成的VPN服务端配置分配的IP都采用net30这种形式,这就导致了在任何一台VPN客户端上无法实现路由指向,因为子网掩码30换算出来就两个地址. t ...

  4. Overclock STM32F4 device up to 250MHz

    http://stm32f4-discovery.com/2014/11/overclock-stm32f4-device-up-to-250mhz/ Let’s test what STM32F4x ...

  5. 推荐13个.Net开源的网络爬虫

    1:.Net开源的跨平台爬虫框架 DotnetSpider Star:430 DotnetSpider这是国人开源的一个跨平台.高性能.轻量级的爬虫软件,采用 C# 开发.目前是.Net开源爬虫最为优 ...

  6. Visio中如何绘制黑白图像

  7. Google 镜像站搜集

    在特殊的地方和特殊的时间,流畅顺利的打开一个网站也变得如此艰难. 2016.01.16 更新.本站订阅更新功能已上线,欢迎订阅! 以下是直接使用谷歌的方法,如需***戳这里(VPN | Shadows ...

  8. delphi DockPresident

    作为Delphi的忠实用户,我想大家对Delphi中的停靠窗体应该比较熟悉吧,是不是也希望自己编的程序也具有这样的功能?使她看起来更漂亮,更专业,更方便. 本人做的一套停靠控件DockPresiden ...

  9. AngularJS使用angular-formly进行表单验证

    当验证表单中有很多字段时,这时候可能希望把html的生成以及验证逻辑放到controller中,在页面,也许是这样的: <some-form fiedls="vm.someFields ...

  10. MyBatis-Generator最佳实践

    引用地址:http://arccode.net/2015/02/07/MyBatis-Generator%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/ 最近使用MyBati ...