Unity3D中LineRenderer的使用


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

其實我們也可以通過腳本來為其添加LineRenderer組件:   
LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer>();
獲取LineRenderer組件:   
lineRenderer = GetComponent<LineRenderer>();
【    案例】根據鼠標左擊的位置,來持續繪制線段   
首先我們在場景中新建一個空的      GameObject,並Reset一下。然后將Script1腳本添加給他。      
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)會產生什么樣的效果呢?那就是我們拖動鼠標就可以持續的渲染線段了。   

 


免責聲明!

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



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