Unity 之 LineReaderer組件

      網友投稿 1239 2025-03-31

      LineRenderer線渲染器主要是用于在3D中渲染線段,雖然我們也可以使用GL圖像庫來渲染線段,但是使用LineRenderer我們可以對線段進行更多的操作,例如:設置顏色,寬度等。在這里要注意LineRenderer渲染出的線段的兩個端點是3D世界中的點,即他是屬于世界坐標(World

      Point)中的。

      LineRenderer是以組件形成存在的,首先我們新建一個空的Game Object,然后我們選擇“Component→Effects→Line Renderer”,,

      或者在物體的Add Component按鈕上直接輸入LineReaderer,點擊添加,,,

      當然還可以使用腳本添加組件,和獲取組件,和其他組件的添加獲取都是一樣的,,,

      this.gameObject.AddComponent(); this.GetComponent();

      1

      2

      3

      組件屬性面板的介紹:

      翻譯自:https://docs.unity3d.com/Manual/class-LineRenderer.html

      |Receive Shadows、接收陰影 | 如果啟用,該行會收到陰影。 | |Motion Vectors、運動向量 |選擇用于此Line Renderer的運動矢量類型。請參閱Scripting API參考文檔中的Renderer.motionVectorGenerationMode以了解更多信息。 | |Materials、材質 |這些屬性描述了用于渲染線條的一系列材質。該行將為數組中的每個材質繪制一次。|

      1

      2

      3

      |Light Parameters、 光參數 |在此處引用“ 光照貼圖參數”資源以啟用該線與全局照明系統進行交互。 |

      |Positions、 位置| 這些屬性描述了要連接的Vector3點的數組。|

      |Use World Space 、使用世界空間 |如果啟用,則將這些點視為世界空間坐標,而不是受到此組件附加到的GameObject的轉換。|

      |Loop、循環 |啟用此功能以連接線條的第一個和最后一個位置。這形成了一個閉環。|

      |Width 寬度 |定義一個寬度值和一條曲線,以控制在開始和結束之間不同點的線條寬度。曲線只在每個頂點被采樣,所以它的精度受限于線上頂點的數量。線的整體寬度由寬度值控制。|

      |Color、顏色| 定義一個漸變來控制沿其長度的線的顏色。|

      |Corner Vertices 、角頂點 |此屬性規定了在一條線中繪制角點時使用了多少個額外的頂點。增加這個值,使線條的角落顯得圓滑。|

      |End Cap Vertices、 端蓋頂點| 這個屬性決定了多少個額外的頂點被用來創建線上的端蓋。增加此值以使線帽顯得更圓。|

      |Alignment 、對準 |設置為“ 查看”,使線條面向“相機”或“ 本地”,以根據其“轉換”組件的方向對齊。|

      |Texture Mode 、紋理模式| 控制紋理如何應用于線條。使用“ 拉伸”沿著整條線的長度應用“紋理貼圖”,或者使用“ 包裹”使紋理沿著線的長度重復。使用“材質”中的“平鋪”參數來控制重復率。|

      |Generate Lighting Data 、生成照明數據 |如果啟用(選中該框),線幾何體將包含法線和切線。這允許它使用使用場景照明的材質,例如通過標準著色器,或使用自定義著色器。|

      |Light Probes 、光探針 |基于探頭的照明插值模式。|

      |Reflection Probes 、反射探針 |如果啟用并且場景中存在反射探針,則為該線渲染器選擇反射紋理,并將其設置為內置Shader統一變量。|

      舉個栗子,,,

      簡例1:

      類似于見縫插針游戲中的使用:

      搭建場景打球旋轉,兩個小球作為打球的子物體跟著旋轉,此時用LineReaderer來模擬他們是連接著的,,給小球添加LineReaderer組件并設置屬性Positions的起始點,使其連接到大球中心,如下圖:

      編寫大球旋轉代碼如下:

      public class RotateTest : MonoBehaviour { public bool isTrue = true; //是否旋轉 public int speed = 10; //旋轉速度(默認順時針) void Update () { if (isTrue) { this.gameObject.transform.Rotate(new Vector3(0,0,1*Time.deltaTime*speed)); } } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      小球上的控制代碼,,,

      public class MyLine : MonoBehaviour { private LineRenderer line; //射線 void Start() { //獲取射線 line = GetComponent(); if (line == null) { line = this.gameObject.AddComponent(); } //設置線的寬度 line.startWidth = 0.03f; line.endWidth = 0.03f; } void Update() { //時刻更新線的位置 line.SetPosition(1, this.transform.position); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      運行程序即可看到,大球帶領小球旋轉,,,

      簡例2:

      鼠標點擊畫線,,,

      using UnityEngine; public class MyLineTest : MonoBehaviour { //LineRenderer private LineRenderer lineRenderer; //定義一個Vector3,用來存儲鼠標點擊的位置 private Vector3 position; //用來索引端點 private int index = 0; //端點數 private int Count = 0; void Start() { //添加LineRenderer組件 lineRenderer = gameObject.AddComponent(); //設置線的寬度,方法棄用,使用下面兩個代替了,修改顏色的也是一樣 //lineRenderer.SetWidth(0.01f, 0.01f); lineRenderer.startWidth = 0.001f; lineRenderer.endWidth = 0.001f; //設置顏色 //lineRenderer.startColor = Color.green; //lineRenderer.endColor = Color.yellow; } void Update() { //獲取LineRenderer組件 lineRenderer = GetComponent(); //鼠標左擊 if (Input.GetMouseButtonDown(0)) { //將鼠標點擊的屏幕坐標轉換為世界坐標,然后存儲到position中 position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 1.0f)); //端點數增加 Count++; //設置線段的端點數 lineRenderer.positionCount = Count; } //連線 while (index < Count) { //index 是第幾條線的意思,position 是線段終點 lineRenderer.SetPosition(index, position); index++; } } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      Unity 之 LineReaderer組件

      53

      運行結果:

      設置畫出線的渲染顏色,,,

      //設置畫線顏色,需要改變材質球的模式,,,如下圖: public Material material; //Inspector面板上賦值 void Start(){ lineRenderer.material =material; //設置自己喜歡顏色,, lineRenderer.startColor = Color.green; lineRenderer.endColor = Color.yellow; }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      unity 渲染

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:報表表格軟件有哪些(工作報表用什么軟件)
      下一篇:我的第一個python web開發框架(6)——第一個Hello World
      相關文章
      亚洲精品99久久久久中文字幕 | 亚洲欧美乱色情图片| 亚洲AV无码乱码国产麻豆| 浮力影院亚洲国产第一页| 亚洲裸男gv网站| 亚洲阿v天堂在线2017免费| 亚洲AV无码一区二区三区在线观看 | 中文字幕亚洲一区二区va在线| 无码一区二区三区亚洲人妻| 18禁亚洲深夜福利人口| 亚洲AV日韩AV永久无码色欲| 亚洲sm另类一区二区三区| 亚洲欧美国产日韩av野草社区| 亚洲色大成网站www尤物| 亚洲欧美日韩国产成人| 亚洲av无码一区二区三区在线播放| 亚洲日韩亚洲另类激情文学| 亚洲色少妇熟女11p| 亚洲变态另类一区二区三区| 亚洲AV无码专区国产乱码不卡| 亚洲国产欧美国产综合一区| 久久精品国产亚洲AV天海翼| 国产成人高清亚洲一区久久 | 亚洲Aⅴ无码一区二区二三区软件| 亚洲av手机在线观看| 亚洲国产精品一区二区第一页免| 亚洲精品无码成人片在线观看 | 精品亚洲一区二区三区在线播放| xvideos亚洲永久网址| 亚洲国产一区二区三区| 中文字幕精品无码亚洲字| 亚洲精品成人片在线播放| 亚洲一区二区三区香蕉| 亚洲AV中文无码字幕色三| 日韩亚洲Av人人夜夜澡人人爽| 亚洲成av人片在线看片| 亚洲综合一区国产精品| 亚洲第一se情网站| 国产亚洲精品福利在线无卡一| 日本亚洲成高清一区二区三区| 亚洲国产香蕉碰碰人人|