Hi,
I am trying to draw line using line rendrer as per mouse drag, its work for orthographic camera, but not working for perspective camera.
I am printing the values of linerenderer position array, but everytime , it gives me (0,0,0) initial position in whole array.
So please help me.
Code which i have written is,
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class DrawLine : MonoBehaviour
{
public List<Vector3> pointsList;
public Material mat ;
private LineRenderer lineRenderer;
private bool isMousePressed;
private Vector3 mousePos;
private Vector3 lastPos;
void Awake()
{
// Create line renderer component and set its property
lineRenderer = gameObject.GetComponent<LineRenderer>();
lineRenderer.SetVertexCount(0);
lineRenderer.SetWidth(0.1f,0.1f);
lineRenderer.useWorldSpace = true;
isMousePressed = false;
pointsList = new List<Vector3>();
}
// -----------------------------------
void Update ()
{
// If mouse button down, remove old line and set its color to green
if(Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100))
{
if (hit.transform.gameObject == transform.gameObject)
{
print("hit me");
isMousePressed = true;
lineRenderer.SetVertexCount(0);
pointsList.RemoveRange(0,pointsList.Count);
}
}
}
else if(Input.GetMouseButtonUp(0))
{
if(isMousePressed)
{
lineRenderer.enabled = false;
isMousePressed = false;
print("LastPos:"+lastPos);
}
}
// Drawing line when mouse is moving(presses)
if(isMousePressed)
{
mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
mousePos.z=0;
//if (!pointsList.Contains (mousePos))
//{
pointsList.Add (mousePos);
lastPos=mousePos;
lineRenderer.SetVertexCount (pointsList.Count);
lineRenderer.SetPosition (pointsList.Count - 1, (Vector3)pointsList [pointsList.Count - 1]);
//}
}
}
}