using System.Collections.Generic;
using UnityEngine;
//[RequireComponent(typeof(LineRenderer))]
public class LineRendererTest : MonoBehaviour
{
List<Vector3> linePoints = new List<Vector3>();
LineRenderer lineRenderer;
public float startWidth = 1.0f;
public float endWidth = 1.0f;
public float threshold = 0.001f;
public Camera thisCamera;
int lineCount = 0;
public GameObject linePrefab;
public bool buttonPressed;
public List<Vector3> mousePosArray;
Vector3 lastPos = Vector3.one * float.MaxValue;
void Awake()
{
thisCamera = Camera.main;
}
private void Start()
{
}
void Update()
{
if (Input.GetMouseButton(0))
{
if(!buttonPressed)
{
linePoints.Clear();
lineCount = 0;
buttonPressed = true;
CreateLine();
}
}
if (Input.GetMouseButton(0))
{
UpdateLine();
}
if (Input.GetMouseButtonUp(0))
{
linePoints.Clear();
lineCount = 0;
buttonPressed = false;
}
}
void CreateLine()
{
GameObject newLine = Instantiate(linePrefab, Input.mousePosition, Quaternion.identity);
lineRenderer = newLine.GetComponent<LineRenderer>();
Vector3 mousePos = Input.mousePosition;
mousePos.z = thisCamera.nearClipPlane;
Vector3 mouseWorld = thisCamera.ScreenToWorldPoint(mousePos);
float dist = Vector3.Distance(lastPos, mouseWorld);
if (dist <= threshold)
return;
lastPos = mouseWorld;
}
void UpdateLine()
{
Vector3 mousePos = Input.mousePosition;
mousePos.z = thisCamera.nearClipPlane;
Vector3 mouseWorld = thisCamera.ScreenToWorldPoint(mousePos);
float dist = Vector3.Distance(lastPos, mouseWorld);
if (dist <= threshold)
return;
lastPos = mouseWorld;
if (linePoints == null)
linePoints = new List<Vector3>();
linePoints.Add(mouseWorld);
lineRenderer.SetWidth(startWidth, endWidth);
lineRenderer.SetVertexCount(linePoints.Count);
for (int i = lineCount; i < linePoints.Count; i++)
{
lineRenderer.SetPosition(i, linePoints[i]);
}
lineCount++;
}
}
using UnityEngine;
//[RequireComponent(typeof(LineRenderer))]
public class LineRendererTest : MonoBehaviour
{
List<Vector3> linePoints = new List<Vector3>();
LineRenderer lineRenderer;
public float startWidth = 1.0f;
public float endWidth = 1.0f;
public float threshold = 0.001f;
public Camera thisCamera;
int lineCount = 0;
public GameObject linePrefab;
public bool buttonPressed;
public List<Vector3> mousePosArray;
Vector3 lastPos = Vector3.one * float.MaxValue;
void Awake()
{
thisCamera = Camera.main;
}
private void Start()
{
}
void Update()
{
if (Input.GetMouseButton(0))
{
if(!buttonPressed)
{
linePoints.Clear();
lineCount = 0;
buttonPressed = true;
CreateLine();
}
}
if (Input.GetMouseButton(0))
{
UpdateLine();
}
if (Input.GetMouseButtonUp(0))
{
linePoints.Clear();
lineCount = 0;
buttonPressed = false;
}
}
void CreateLine()
{
GameObject newLine = Instantiate(linePrefab, Input.mousePosition, Quaternion.identity);
lineRenderer = newLine.GetComponent<LineRenderer>();
Vector3 mousePos = Input.mousePosition;
mousePos.z = thisCamera.nearClipPlane;
Vector3 mouseWorld = thisCamera.ScreenToWorldPoint(mousePos);
float dist = Vector3.Distance(lastPos, mouseWorld);
if (dist <= threshold)
return;
lastPos = mouseWorld;
}
void UpdateLine()
{
Vector3 mousePos = Input.mousePosition;
mousePos.z = thisCamera.nearClipPlane;
Vector3 mouseWorld = thisCamera.ScreenToWorldPoint(mousePos);
float dist = Vector3.Distance(lastPos, mouseWorld);
if (dist <= threshold)
return;
lastPos = mouseWorld;
if (linePoints == null)
linePoints = new List<Vector3>();
linePoints.Add(mouseWorld);
lineRenderer.SetWidth(startWidth, endWidth);
lineRenderer.SetVertexCount(linePoints.Count);
for (int i = lineCount; i < linePoints.Count; i++)
{
lineRenderer.SetPosition(i, linePoints[i]);
}
lineCount++;
}
}