- Home /
 
 
               Question by 
               sarthakshah · Sep 09, 2014 at 01:09 PM · 
                linerendererlineperspective  
              
 
              Line renderer is not working for Perspective camera.
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]);
 
             //}
         }
     }
 
 }
 
              
               Comment
              
 
               
               
               Best Answer 
              
 
              Answer by sarthakshah · Sep 30, 2014 at 08:53 AM
Hi,
Got the solution of it.
By just replacing following two lines,
 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
 mousePos.z=0;
 
               By this line
 mousePos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y, transform.position.z - Camera.main.transform.position.z));
 
               Cheers......
Your answer