Unity之LineRenderer組件

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


其實我們也可以通過腳本來為其添加

Z0Q8Q(HTLX@56P@SF~K~$RU.png

LineRenderer組件:

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

獲取LineRenderer組件:

lineRenderer = GetComponent<LineRenderer>();  

【案例】根據(jù)鼠標(biāo)左擊的位置,來持續(xù)繪制線段
首先我們在場景中新建一個空的GameObject,并Reset一下。然后將Script1腳本添加給他。

using UnityEngine;  
using System.Collections;  
  
public class Script1 : MonoBehaviour {  
    //LineRenderer  
    private LineRenderer lineRenderer;  
    //定義一個Vector3,用來存儲鼠標(biāo)點擊的位置  
    private Vector3 position;  
    //用來索引端點  
    private int index = 0;  
    //端點數(shù)  
    private int LengthOfLineRenderer=0;  
  
    void Start()  
    {  
        //添加LineRenderer組件  
        lineRenderer = gameObject.AddComponent<LineRenderer>();  
        //設(shè)置材質(zhì)  
        lineRenderer.material = new Material(Shader.Find("Particles/Additive"));  
        //設(shè)置顏色  
        lineRenderer.SetColors(Color.red, Color.yellow);  
        //設(shè)置寬度  
        lineRenderer.SetWidth(0.02f, 0.02f);  
          
    }  
  
    void Update()  
    {    
        //獲取LineRenderer組件  
        lineRenderer = GetComponent<LineRenderer>();  
       //鼠標(biāo)左擊  
        if (Input.GetMouseButtonDown(0))  
        {  
            //將鼠標(biāo)點擊的屏幕坐標(biāo)轉(zhuǎn)換為世界坐標(biāo),然后存儲到position中  
            position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y,1.0f));   
            //端點數(shù)+1  
            LengthOfLineRenderer++;  
            //設(shè)置線段的端點數(shù)  
            lineRenderer.SetVertexCount(LengthOfLineRenderer);  
              
        }  
        //連續(xù)繪制線段  
        while (index < LengthOfLineRenderer)  
        {     
            //兩點確定一條直線,所以我們依次繪制點就可以形成線段了  
            lineRenderer.SetPosition(index, position);  
            index++;  
        }   
         
  
    }  
  
    void OnGUI()  
    {            
        GUILayout.Label("當(dāng)前鼠標(biāo)X軸位置:" + Input.mousePosition.x);  
        GUILayout.Label("當(dāng)前鼠標(biāo)Y軸位置:" + Input.mousePosition.y);          
    }    
}  

效果圖:

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


添加腳本使物體射線跟隨

    public GameObject a;
    LineRenderer or;

    void Start () {
        or = transform.GetComponent<LineRenderer>();
    }
    
    // Update is called once per frame
    void Update () {
        //使射線跟隨物體a
        or.SetPosition(1, a.transform.position);
        //創(chuàng)建物體a拖尾效果(飛機的航線)
        //or.SetPosition(0,a.transform.position);
    }
Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Unity簡介 1. Unity界面 Shift + Space : 放大界面 Scene界面按鈕渲染模式2D...
    MYves閱讀 8,662評論 0 22
  • This article is a record of my journey to learn Game Deve...
    蔡子聰閱讀 4,098評論 0 9
  • 為了對得起新買的運動褲,更為了分散某些注意力,瘋狂運動了一番,決定去辦張卡了,行動力是不是又碾壓了那個誰誰,沒辦法...
    自由和安閱讀 125評論 1 1
  • 興趣與負(fù)擔(dān) 我覺得,只要是一門興趣,即不應(yīng)該成為一種負(fù)擔(dān),即使它也是一種使命。 但就目前來看,很多計劃我的確完成不...
    蒙古海軍上將閱讀 159評論 0 1
  • 最近阿里巴巴旗下的招財寶發(fā)生了逾期事件,即違約事件,了解一下事件背后的邏輯,或許對你我會有警示作用: 這個事件主要...
    胡思亂想之閱讀 234評論 0 0

友情鏈接更多精彩內(nèi)容