http://blog.csdn.net/dzyi_/article/details/22937349

原文地址: http://www.xuanyusong.com/archives/561
任何一个无规则曲线它都是有若干个线段组成,及时是圆形它也是又若干个线段组成的,也就是说将若干个线段拼接起来就是我们须要的无规则曲线~那么在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; 是否使用世界坐标系,和上面编辑器对应。
[csharp]  view plain copy
  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使用的是颜色,大家也可以添加一个贴图~

给直线添加纹理时,要注意纹理的格式。当纹理格式设置为Sprites/Default时,无色部分为透明。其他部分可以更改颜色。

Unity3D直线绘制相关推荐

  1. 使用canvas绘制楼梯(canvas直线绘制练习)

    2019独角兽企业重金招聘Python工程师标准>>> <!DOCTYPE html> <html lang="en"> <head ...

  2. 图形学(2)光栅图形学的直线绘制(上)

    本模块内容绝大部分是在慕课上看中国农业大学网客时的笔记,因此算作转载,在此鸣谢赵明.李振波两位老师,感谢他们录制该门课程供大家学习! 光栅图形学 为适应光栅显示器,需发展一套和他相适应的算法来处理.显 ...

  3. 图形学(3)光栅图形学的直线绘制(下)

    本模块内容绝大部分是在慕课上看中国农业大学网客时的笔记,因此算作转载,在此鸣谢赵明.李振波两位老师,感谢他们录制该门课程供大家学习! Bresenham算法 前两种算法把效率提高到了整数加法级别,只讲 ...

  4. creo 6.0—07:creo草绘环境的建立、 直线绘制

    07 creo草绘环境的建立以及 直线绘制 Creo中有 草绘文件 的建立,但是我们一般都直接在 零件文件中建立我们的三维模型 在实际设计工作中,一般不单独建立草绘 文件: 1.建立一个新 零件,我建 ...

  5. 直线绘制算法-Bresenham算法

    该算法相较于其他直线绘制算法摆脱了直线方程式的使用,通过换元的思想实现整数加法的迭代. 一.Bresenham算法 前提条件k∈[0,1],直线在x方向上每次增量为,在y方向上每次的增量为.通过一个变 ...

  6. c语言 绘制任意斜率的直线,绘制任意斜率的直线

    <绘制任意斜率的直线>由会员分享,可在线阅读,更多相关<绘制任意斜率的直线(15页珍藏版)>请在人人文库网上搜索. 1.淮海工学院计算机工程学院 实验报告书 课程名: 计算机图 ...

  7. 镜像、复制和直线绘制CAD图形

    这个CAD图形可以分成两个部分:上面一部分和下面一部分,都是有多个相同的对象,所以只需要绘制出其中一个再使用复制和旋转命令将其它的绘制出就可了,用到的主要CAD命令有CAD直线.CAD旋转.CAD镜像 ...

  8. 【Unity3D】绘制物体外框线条盒子

    1 需求描述 点选物体.框选物体.绘制外边框 中介绍了物体投影到屏幕上的二维外框绘制方法,本文将介绍物体外框线条盒子绘制方法. 内框:选中物体后,绘制物体的内框(紧贴物体.并与物体姿态一致的内框盒子) ...

  9. dxf里的组码,以及圆与直线绘制

    在DXF中可以使用图元的特征来绘制自身.比如,圆需要圆心和半径,直线需要起点.终点.这些特征值在DXF中,都用组码表示,如表(1)所示.      组码              含义         ...

最新文章

  1. 蓝桥杯 基础练习 十进制转十六进制(水题,进制转换)
  2. 第九章 关联数组/哈希表
  3. ubuntu 16gcc g++版本降级
  4. 在Cocos2d中实现能够惯性拖动的选择界面
  5. 解析PHP跳出循环的方法以及continue、break、exit的区别介绍
  6. STM32之FSMC-SRAM例程
  7. c语言让系统蓝屏,0x000000116,教您解决电脑蓝屏代码0x000000116
  8. 上岸 | 青椒博士毕业后未返校任教,被判返还高校41万余元
  9. 240多个jQuery插件 功能强大 齐全
  10. 如何为报表服务器设置SQL Server数据库复制
  11. Git报错解决:fatal: unable to access ‘https://github.com/...‘: OpenSSL SSL_read:..., errno 10054
  12. 【唐宇迪】opencv实战学习
  13. matlab 识别车辆,基于MATLAB的车辆牌照识别系统设计
  14. 浪曦视频--工厂方法模式
  15. {“errcode“:40125,“errmsg“:“invalid appsecret, view more at http:\/\/t.cn\/RAEkdVq rid: 60d999f2-3ad5
  16. iphone 手势编程---值得回忆的API
  17. 学编程和学机器人有什么区别
  18. 刚体质量分布与牛顿-欧拉方程
  19. 什么是绿色工厂?什么企业可以申报绿色工厂?
  20. 微信小程序wxs将数字转换为汉字

热门文章

  1. Python 从后往前每隔三个数字加一个逗号的方法
  2. 倍福触摸屏维修控制面板CP6606-0001-0020
  3. 关于onscroll函数兼容各浏览器的方法分析
  4. Sql语句优化之explan分析案例
  5. 《2018年五一小长假人气榜》大数据发布!
  6. Nature | 基因组定位涉及精神分裂症的基因和突触生物学
  7. quill已死,谨慎使用
  8. Lancet Diabetes Endocrinol | 低碳水化合物饮食对2型糖尿病患者受用吗?
  9. “康养身心 乐享银龄”走进龙翔村
  10. Matlab fmincon函数用法