<轉載>Unity3D中LineRenderer的使用

原文地址:<Unity3D>Unity3D中LineRenderer的使用

LineRenderer線渲染器主要是用于在3D中渲染線段,雖然我們也可以使用GL圖像庫來渲染線段,但是使用LineRenderer我們可以對線段進行更多的操作,例如:設置顏色,寬度等。在這里要注意LineRenderer渲染出的線段的兩個端點是3D世界中的點,即他是屬于世界坐標(World Point)中的。
LineRenderer是以組件形成存在的,首先我們新建一個空的Game Object,然后我們選擇“Component→Effects→Line Renderer”,即可為其添加LineRenderer組件了。


其實我們也可以通過腳本來為其添加LineRenderer組件:
[csharp] view plain copy

LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer>();

獲取LineRenderer組件:
[csharp] view plain copy

lineRenderer = GetComponent<LineRenderer>();

【案例】根據鼠標左擊的位置,來持續繪制線段
首先我們在場景中新建一個空的GameObject,并Reset一下。然后將Script1腳本添加給他。
[csharp] view plain copy

using UnityEngine;
using System.Collections;

public class Script1 : MonoBehaviour {
//LineRenderer
private LineRenderer lineRenderer;
//定義一個Vector3,用來存儲鼠標點擊的位置
private Vector3 position;
//用來索引端點
private int index = 0;
//端點數
private int LengthOfLineRenderer=0;

void Start()  
{  
    //添加LineRenderer組件  
    lineRenderer = gameObject.AddComponent<LineRenderer>();  
    //設置材質  
    lineRenderer.material = new Material(Shader.Find("Particles/Additive"));  
    //設置顏色  
    lineRenderer.SetColors(Color.red, Color.yellow);  
    //設置寬度  
    lineRenderer.SetWidth(0.02f, 0.02f);  
      
}  

void Update()  
{    
    //獲取LineRenderer組件  
    lineRenderer = GetComponent<LineRenderer>();  
   //鼠標左擊  
    if (Input.GetMouseButtonDown(0))  
    {  
        //將鼠標點擊的屏幕坐標轉換為世界坐標,然后存儲到position中  
        position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y,1.0f));   
        //端點數+1  
        LengthOfLineRenderer++;  
        //設置線段的端點數  
        lineRenderer.SetVertexCount(LengthOfLineRenderer);  
          
    }  
    //連續繪制線段  
    while (index < LengthOfLineRenderer)  
    {     
        //兩點確定一條直線,所以我們依次繪制點就可以形成線段了  
        lineRenderer.SetPosition(index, position);  
        index++;  
    }   
     

}  

void OnGUI()  
{            
    GUILayout.Label("當前鼠標X軸位置:" + Input.mousePosition.x);  
    GUILayout.Label("當前鼠標Y軸位置:" + Input.mousePosition.y);          
}  

}

效果圖:

在這里我提一下,如果我們將Input.GetMouseButtonDown(0)改為Input.GetMouseButton(0)會產生什么樣的效果呢?那就是我們拖動鼠標就可以持續的渲染線段了。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容