LineRenderer線渲染器主要是用于在3D中渲染線段,雖然我們也可以使用GL圖像庫來渲染線段,但是使用LineRenderer我們可以對線段進行更多的操作,例如:設置顏色,寬度等。在這里要注意LineRenderer渲染出的線段的兩個端點是3D世界中的點,即他是屬于世界坐標(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>();
【案例】根據鼠標左擊的位置,來持續繪制線段
首先我們在場景中新建一個空的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)會產生什么樣的效果呢?那就是我們拖動鼠標就可以持續的渲染線段了。
添加腳本使物體射線跟隨
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);
//創建物體a拖尾效果(飛機的航線)
//or.SetPosition(0,a.transform.position);
}
Paste_Image.png