(轉)unity使用line renderer畫線


任何一個無規則曲線它都是有若干個線段組成,及時是圓形它也是又若干個線段組成的,也就是說將若干個線段拼接起來就是我們須要的無規則曲線~那么在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.   
  5. public class Main : MonoBehaviour {  
  6.       
  7.     //游戲對象,這里是線段對象  
  8.     private GameObject LineRenderGameObject;  
  9.       
  10.     //線段渲染器  
  11.     private LineRenderer lineRenderer;  
  12.       
  13.     //設置線段的個數,標示一個曲線由幾條線段組成  
  14.     private int lineLength = 4;  
  15.       
  16.     //分別記錄4個點,通過這4個三維世界中的點去連接一條線段  
  17.     private Vector3 v0 = new Vector3(1.0f,0.0f,0.0f);  
  18.     private Vector3 v1 = new Vector3(0.0f,1.0f,0.0f);  
  19.     private Vector3 v2 = new Vector3(0.0f,0.0f,1.0f);  
  20.     private Vector3 v3 = new Vector3(1.0f,0.0f,0.0f);  
  21.       
  22.     void Start(){  
  23.           
  24.         //通過之前創建的對象的名稱,就可以在其它類中得到這個對象,  
  25.         //這里在main.cs中拿到line的對象  
  26.         LineRenderGameObject = GameObject.Find ("line");  
  27.           
  28.         //通過游戲對象,GetComponent方法 傳入LineRenderer  
  29.         //就是之前給line游戲對象添加的渲染器屬性  
  30.         //有了這個對象才可以為游戲世界渲染線段  
  31.         lineRenderer = (LineRenderer)LineRenderGameObject.GetComponent ("LineRenderer");  
  32.           
  33.         //設置線段長度,這個數值須要和繪制線3D點的數量想等  
  34.         //否則會拋異常~~  
  35.         lineRenderer.SetVertexCount(lineLength);  
  36.           
  37.           
  38.     }     
  39.                    
  40.       
  41.     void Update() {  
  42.           
  43.         //在游戲更新中去設置點  
  44.         //根據點將這個曲線鏈接起來  
  45.         //第一個參數為 點的ID   
  46.         //第二個 參數為點的3D坐標  
  47.         //ID 一樣的話就標明是一條線段  
  48.         //所以盆友們須要注意一下!  
  49.           
  50.         lineRenderer.SetPosition (0, v0);  
  51.         lineRenderer.SetPosition (1, v1);  
  52.         lineRenderer.SetPosition (2, v2);  
  53.         lineRenderer.SetPosition (3, v3);  
  54.   
  55.   
  56.     }  
  57.       
  58. }  
 
通過上面代碼的設置,運行游戲,發現全新的一個三角形曲線赫然的映入我們的眼簾,有了上面的方法我們就可以組合的繪制出各種各樣的3D 游戲曲線了,這里MOMO使用的是顏色,大家也可以添加一個貼圖~
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM